[SDL] Minor X11 hack:

Ryan C. Gordon icculus at clutteredmind.org
Sun Sep 1 18:27:00 PDT 2002


Here's a patch to center a newly-created, non-fullscreen X11 window.
While this may or may not be suitable for adding to SDL officially, I
didn't want to put any Xlib dependencies in my code directly.

To use:

- Apply patch/rebuild.
- export SDL_WINDOW_POS=center
- Call SDL_SetVideoMode as needed.

(Ideally, this could be expanded to handle other commands like
SDL_WINDOW_POS=20x190, etc, and could be implemented for other targets,
but this is really a hack to avoid API changes).

--ryan.

---------------------------------

diff -u -r1.10 SDL_x11video.c
--- src/video/x11/SDL_x11video.c	2002/08/19 03:40:44	1.10
+++ src/video/x11/SDL_x11video.c	2002/09/02 01:20:40
@@ -870,6 +870,18 @@
 			screen->flags |= SDL_FULLSCREEN;
 			X11_EnterFullScreen(this);
 		} else {
+			/* Position standalone window based on user request. --ryan. */
+			const char *envr = getenv("SDL_WINDOW_POS");
+			if (envr != NULL) {
+				int xscreen = DefaultScreen(SDL_Display);
+				if (strcmp(envr, "center") == 0) {
+					int disw = DisplayWidth(SDL_Display, xscreen);
+					int dish = DisplayHeight(SDL_Display, xscreen);
+					int centerx = (disw - current_w) / 2;
+					int centery = (dish - current_h) / 2;
+					XMoveWindow(SDL_Display, WMwindow, centerx, centery);
+				}
+			}
 			screen->flags &= ~SDL_FULLSCREEN;
 		}
 	}





More information about the SDL mailing list