Pārlūkot izejas kodu

[X11] Obey DISPLAY environment variable when selecting screen (Steaphan Greene)

Discussed in bug #2192, tested with Xvfb in dual head configuration.
Gabriel Jacobo 10 gadi atpakaļ
vecāks
revīzija
29eb6e9b3c
1 mainītis faili ar 11 papildinājumiem un 2 dzēšanām
  1. 11 2
      src/video/x11/SDL_x11modes.c

+ 11 - 2
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) {