Alexandre Julliard : winex11: Default to an ARGB visual when depth is set to 32.

Alexandre Julliard julliard at winehq.org
Fri Jan 26 16:59:10 CST 2018


Module: wine
Branch: master
Commit: 31c7a7157d991d3d60ff8985fa1061c9eb97142a
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=31c7a7157d991d3d60ff8985fa1061c9eb97142a

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Jan 26 13:39:22 2018 +0100

winex11: Default to an ARGB visual when depth is set to 32.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winex11.drv/x11drv_main.c | 36 ++++++++++++++++++++----------------
 1 file changed, 20 insertions(+), 16 deletions(-)

diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
index a2ec18b..e67a3c0 100644
--- a/dlls/winex11.drv/x11drv_main.c
+++ b/dlls/winex11.drv/x11drv_main.c
@@ -484,11 +484,29 @@ static void init_visuals( Display *display, int screen )
     int count;
     XVisualInfo *info;
 
+    argb_visual.screen     = screen;
+    argb_visual.class      = TrueColor;
+    argb_visual.depth      = 32;
+    argb_visual.red_mask   = 0xff0000;
+    argb_visual.green_mask = 0x00ff00;
+    argb_visual.blue_mask  = 0x0000ff;
+
+    if ((info = XGetVisualInfo( display, VisualScreenMask | VisualDepthMask | VisualClassMask |
+                                VisualRedMaskMask | VisualGreenMaskMask | VisualBlueMaskMask,
+                                &argb_visual, &count )))
+    {
+        argb_visual = *info;
+        XFree( info );
+    }
+
     default_visual.screen = screen;
     if (default_visual.depth)  /* depth specified */
     {
-        info = XGetVisualInfo( display, VisualScreenMask | VisualDepthMask, &default_visual, &count );
-        if (info)
+        if (default_visual.depth == 32 && argb_visual.visual)
+        {
+            default_visual = argb_visual;
+        }
+        else if ((info = XGetVisualInfo( display, VisualScreenMask | VisualDepthMask, &default_visual, &count )))
         {
             default_visual = *info;
             XFree( info );
@@ -510,20 +528,6 @@ static void init_visuals( Display *display, int screen )
     }
     default_colormap = XCreateColormap( display, root_window, default_visual.visual, AllocNone );
 
-    argb_visual.screen     = screen;
-    argb_visual.class      = TrueColor;
-    argb_visual.depth      = 32;
-    argb_visual.red_mask   = 0xff0000;
-    argb_visual.green_mask = 0x00ff00;
-    argb_visual.blue_mask  = 0x0000ff;
-
-    if ((info = XGetVisualInfo( display, VisualScreenMask | VisualDepthMask | VisualClassMask |
-                                VisualRedMaskMask | VisualGreenMaskMask | VisualBlueMaskMask,
-                                &argb_visual, &count )))
-    {
-        argb_visual = *info;
-        XFree( info );
-    }
     TRACE( "default visual %lx class %u argb %lx\n",
            default_visual.visualid, default_visual.class, argb_visual.visualid );
 }




More information about the wine-cvs mailing list