[PATCH] winex11.drv: Prefer Xinerama handler over XRandr10.

Derek Lesho dlesho at codeweavers.com
Tue Nov 26 11:57:15 CST 2019


This fixes a regression on XWayland introduced by 914b551's removal of
the raised Xinerama priority when query_screens failed.

Ideally, we'd like XWayland to fix their issues with XRandr and Xinerama,
but this helps out users until then.

Signed-off-by: Derek Lesho <dlesho at codeweavers.com>
---
 dlls/winex11.drv/xrandr.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/dlls/winex11.drv/xrandr.c b/dlls/winex11.drv/xrandr.c
index 5616857347..6bbf1b67ee 100644
--- a/dlls/winex11.drv/xrandr.c
+++ b/dlls/winex11.drv/xrandr.c
@@ -1096,6 +1096,7 @@ void X11DRV_XRandR_Init(void)
     int event_base, error_base, minor, ret;
     static int major;
     Bool ok;
+    INT priority = 200;
 
     if (major) return; /* already initialized? */
     if (!usexrandr) return; /* disabled in config */
@@ -1121,13 +1122,17 @@ void X11DRV_XRandR_Init(void)
 
     if (!pXRRGetScreenResourcesCurrent || xrandr12_init_modes() < 0)
 #endif
+    {
+        /* lower priority below Xinerama if we need to resort to xrandr10 */
+        priority = 50;
         xrandr10_init_modes();
+    }
 
 #ifdef HAVE_XRRGETPROVIDERRESOURCES
     if (ret >= 4 && (major > 1 || (major == 1 && minor >= 4)))
     {
         handler.name = "XRandR 1.4";
-        handler.priority = 200;
+        handler.priority = priority;
         handler.get_gpus = xrandr14_get_gpus;
         handler.get_adapters = xrandr14_get_adapters;
         handler.get_monitors = xrandr14_get_monitors;
-- 
2.24.0




More information about the wine-devel mailing list