Patch for SDL_VIDEO_CENTERED & OpenGL bug
Stephen Anthony to SDL
Using SDL_VIDEO_CENTERED in Linux OpenGL mode issue an unwanted
ConfigureNotify event *after* the SDL screen has already been resized.
When going from a smaller to a larger screen, this event causes the mouse
tracking to be clamped at the *smaller* screen size, even though that
screen no longer exists.
The fix is to not issue a ConfigureNotify when the window is moved because
of the SDL_VIDEO_CENTERED environment variable. The included patch fixes
this bug. It seems the hints must be set before the window is moved.
--- a/src/video/x11/SDL_x11video.c Thu Feb 24 09:39:23 2011 -0800
+++ b/src/video/x11/SDL_x11video.c Thu Feb 24 17:42:45 2011 -0800
@@ -786,6 +786,11 @@
/* Center it, if desired */
if ( X11_WindowPosition(this, &hints->x, &hints->y, w, h) ) {
hints->flags |= USPosition;
+
+ /* Hints must be set before moving the window, otherwise an
+ unwanted ConfigureNotify event will be issued */
+ XSetWMNormalHints(SDL_Display, WMwindow, hints);
+
XMoveWindow(SDL_Display, WMwindow, hints->x, hints->y);
/* Flush the resize event so we don't catch it later */