Patch for SDL_VIDEO_CENTERED & OpenGL bug SDL-1.2
authorSam Lantinga <slouken@libsdl.org>
Thu, 24 Feb 2011 17:42:45 -0800
branchSDL-1.2
changeset 5394 67d3be4ec9f2
parent 5392 30e4d724fe98
child 5492 b214b7ce9b00
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.
src/video/x11/SDL_x11video.c
--- 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 */