[PATCH 2/7] winex11.drv: Report primary monitor first with Xinerama.

Zhiyi Zhang zzhang at codeweavers.com
Wed Mar 20 03:08:44 CDT 2019


This saves callers some trouble with identifying which monitor is primary.

Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
 dlls/winex11.drv/xinerama.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/dlls/winex11.drv/xinerama.c b/dlls/winex11.drv/xinerama.c
index 739b139736..fe899e8744 100644
--- a/dlls/winex11.drv/xinerama.c
+++ b/dlls/winex11.drv/xinerama.c
@@ -128,6 +128,7 @@ static int query_screens(void)
     int i, count, event_base, error_base;
     XineramaScreenInfo *screens;
     RECT rc_work = {0, 0, 0, 0};
+    MONITORINFOEXW *primary_monitor;
 
     if (!monitors)  /* first time around */
         load_xinerama();
@@ -156,7 +157,16 @@ static int query_screens(void)
             lstrcpyW( monitors[i].szDevice, default_monitor.szDevice );
         }
 
-        get_primary()->dwFlags |= MONITORINFOF_PRIMARY;
+        primary_monitor = get_primary();
+        primary_monitor->dwFlags |= MONITORINFOF_PRIMARY;
+
+        /* Make primary monitor always the first one */
+        if (primary_monitor != &monitors[0])
+        {
+            MONITORINFOEXW tmp = monitors[0];
+            monitors[0] = *primary_monitor;
+            *primary_monitor = tmp;
+        }
     }
     else count = 0;
 
-- 
2.19.2





More information about the wine-devel mailing list