From 29eb6e9b3cc2a3e82a41903376c194c48f243642 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Wed, 15 Oct 2014 18:33:43 -0300 Subject: [PATCH] [X11] Obey DISPLAY environment variable when selecting screen (Steaphan Greene) Discussed in bug #2192, tested with Xvfb in dual head configuration. --- src/video/x11/SDL_x11modes.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/video/x11/SDL_x11modes.c b/src/video/x11/SDL_x11modes.c index cd7b38c50..0fc6d2386 100644 --- a/src/video/x11/SDL_x11modes.c +++ b/src/video/x11/SDL_x11modes.c @@ -375,7 +375,7 @@ int X11_InitModes(_THIS) { SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; - int screen, screencount; + int snum, screen, screencount; #if SDL_VIDEO_DRIVER_X11_XINERAMA int xinerama_major, xinerama_minor; int use_xinerama = 0; @@ -423,7 +423,7 @@ X11_InitModes(_THIS) } #endif /* SDL_VIDEO_DRIVER_X11_XVIDMODE */ - for (screen = 0; screen < screencount; ++screen) { + for (snum = 0; snum < screencount; ++snum) { XVisualInfo vinfo; SDL_VideoDisplay display; SDL_DisplayData *displaydata; @@ -433,6 +433,15 @@ X11_InitModes(_THIS) char display_name[128]; int i, n; + /* Re-order screens to always put default screen first */ + if (snum == 0) { + screen = DefaultScreen(data->display); + } else if (snum == DefaultScreen(data->display)) { + screen = 0; + } else { + screen = snum; + } + #if SDL_VIDEO_DRIVER_X11_XINERAMA if (xinerama) { if (get_visualinfo(data->display, 0, &vinfo) < 0) {