summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/i_video.c29
-rw-r--r--src/m_config.c10
-rw-r--r--src/setup/display.c2
3 files changed, 38 insertions, 3 deletions
diff --git a/src/i_video.c b/src/i_video.c
index 14a78279..7ba4c8cd 100644
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -136,6 +136,10 @@ static screen_mode_t *screen_modes_corrected[] = {
char *video_driver = "";
+// Window position:
+
+static char *window_position = "";
+
// SDL surface for the screen.
static SDL_Surface *screen;
@@ -1857,6 +1861,27 @@ static void SetSDLVideoDriver(void)
#endif
}
+static void SetWindowPositionVars(void)
+{
+ char buf[64];
+ int x, y;
+
+ if (window_position == NULL || !strcmp(window_position, ""))
+ {
+ return;
+ }
+
+ if (!strcmp(window_position, "center"))
+ {
+ putenv("SDL_VIDEO_CENTERED=1");
+ }
+ else if (sscanf(window_position, "%i,%i", &x, &y) == 2)
+ {
+ sprintf(buf, "SDL_VIDEO_WINDOW_POS=%i,%i", x, y);
+ putenv(buf);
+ }
+}
+
static char *WindowBoxType(screen_mode_t *mode, int w, int h)
{
if (mode->width != w && mode->height != h)
@@ -1921,8 +1946,6 @@ static void SetVideoMode(screen_mode_t *mode, int w, int h)
#ifndef __MACOSX__
flags |= SDL_RESIZABLE;
#endif
- // villsa - center window
- SDL_putenv("SDL_VIDEO_CENTERED=1");
}
screen = SDL_SetVideoMode(w, h, screen_bpp, flags);
@@ -2030,6 +2053,7 @@ void I_InitGraphics(void)
}
SetSDLVideoDriver();
+ SetWindowPositionVars();
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
@@ -2186,6 +2210,7 @@ void I_BindVideoVariables(void)
M_BindVariable("mouse_acceleration", &mouse_acceleration);
M_BindVariable("mouse_threshold", &mouse_threshold);
M_BindVariable("video_driver", &video_driver);
+ M_BindVariable("window_position", &window_position);
M_BindVariable("usegamma", &usegamma);
M_BindVariable("vanilla_keyboard_mapping", &vanilla_keyboard_mapping);
M_BindVariable("novert", &novert);
diff --git a/src/m_config.c b/src/m_config.c
index 762e6eaf..e66e28e7 100644
--- a/src/m_config.c
+++ b/src/m_config.c
@@ -770,7 +770,15 @@ static default_t extra_defaults_list[] =
// the default video driver is used.
//
- CONFIG_VARIABLE_STRING(video_driver),
+ CONFIG_VARIABLE_STRING(video_driver),
+
+ //!
+ // Position of the window on the screen when running in windowed
+ // mode. Accepted values are: "" (empty string) - don't care,
+ // "center" - place window at center of screen, "x,y" - place
+ // window at the specified coordinates.
+
+ CONFIG_VARIABLE_STRING(window_position),
#ifdef FEATURE_MULTIPLAYER
diff --git a/src/setup/display.c b/src/setup/display.c
index 92b436b7..d22cc67b 100644
--- a/src/setup/display.c
+++ b/src/setup/display.c
@@ -102,6 +102,7 @@ static int num_screen_modes_fullscreen;
static int vidmode = 0;
static char *video_driver = "";
+static char *window_position = "";
static int autoadjust_video_settings = 1;
static int aspect_ratio_correct = 1;
static int fullscreen = 1;
@@ -790,6 +791,7 @@ void BindDisplayVariables(void)
M_BindVariable("screen_bpp", &screen_bpp);
M_BindVariable("startup_delay", &startup_delay);
M_BindVariable("video_driver", &video_driver);
+ M_BindVariable("window_position", &window_position);
M_BindVariable("usegamma", &usegamma);