Fixed bug 2101 - CWBackPixel causes weird window flickering on window resize
authorSam Lantinga <slouken@libsdl.org>
Fri, 27 Sep 2013 23:47:57 -0700
changeset 7750 48acb5c00c4b
parent 7749 6073ad385c9b
child 7751 2f679aa69aea
Fixed bug 2101 - CWBackPixel causes weird window flickering on window resize aBothe I tried to experiment a bit with SDL2 and OpenGL today and noticed that something caused some weird flickering when resizing my nicely drawn SDL2/OpenGL window: Just after resizing, the background went black and I had to let my OpenGL code redraw the contents.. However, after some hours spent with googling I found out that in OpenGL examples where this CWBackPixel flag was not used when creating X windows, there was no flickering while resizing the window. See http://www.sbin.org/doc/Xlib/chapt_04.html @ "The Window Background" for more info.
src/video/x11/SDL_x11window.c
--- a/src/video/x11/SDL_x11window.c	Fri Sep 27 23:35:17 2013 -0700
+++ b/src/video/x11/SDL_x11window.c	Fri Sep 27 23:47:57 2013 -0700
@@ -395,7 +395,7 @@
     }
 
     xattr.override_redirect = False;
-    xattr.background_pixel = 0;
+    xattr.background_pixmap = None;
     xattr.border_pixel = 0;
 
     if (visual->class == DirectColor) {
@@ -480,7 +480,7 @@
     w = XCreateWindow(display, RootWindow(display, screen),
                       window->x, window->y, window->w, window->h,
                       0, depth, InputOutput, visual,
-                      (CWOverrideRedirect | CWBackPixel | CWBorderPixel |
+                      (CWOverrideRedirect | CWBackPixmap | CWBorderPixel |
                        CWColormap), &xattr);
     if (!w) {
         return SDL_SetError("Couldn't create window");