From 61d0351ed3347a2d761d64f6185601954ad76590 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 2 Sep 2002 15:58:29 +0000 Subject: [PATCH] Date: Sun, 1 Sep 2002 21:27:54 -0400 (EDT) From: "Ryan C. Gordon" Subject: [SDL] Minor X11 hack: 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). --- src/video/x11/SDL_x11video.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/video/x11/SDL_x11video.c b/src/video/x11/SDL_x11video.c index ef3e7a212..6967ee0c2 100644 --- a/src/video/x11/SDL_x11video.c +++ b/src/video/x11/SDL_x11video.c @@ -870,6 +870,18 @@ static int X11_CreateWindow(_THIS, SDL_Surface *screen, 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; } }