Tile root pixmap in the glx backend
In X, background pixmap is tiled (meaning they are repeated to filled the window) by default. So, in the glx backend, we mimic this behavior by binding the background pixmap of the root window (aka, the wallpaper) to texture that repeats. Fixes #107 Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
11
src/opengl.c
11
src/opengl.c
@ -496,7 +496,7 @@ glx_load_prog_main(session_t *ps,
|
||||
*/
|
||||
bool
|
||||
glx_bind_pixmap(session_t *ps, glx_texture_t **pptex, xcb_pixmap_t pixmap,
|
||||
unsigned width, unsigned height, const struct glx_fbconfig_info *fbcfg) {
|
||||
unsigned width, unsigned height, bool repeat, const struct glx_fbconfig_info *fbcfg) {
|
||||
if (ps->o.backend != BKEND_GLX && ps->o.backend != BKEND_XR_GLX_HYBRID)
|
||||
return true;
|
||||
|
||||
@ -604,8 +604,13 @@ glx_bind_pixmap(session_t *ps, glx_texture_t **pptex, xcb_pixmap_t pixmap,
|
||||
|
||||
glTexParameteri(ptex->target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(ptex->target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameteri(ptex->target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(ptex->target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
if (repeat) {
|
||||
glTexParameteri(ptex->target, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
glTexParameteri(ptex->target, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
} else {
|
||||
glTexParameteri(ptex->target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(ptex->target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
}
|
||||
|
||||
glBindTexture(ptex->target, 0);
|
||||
|
||||
|
Reference in New Issue
Block a user