<div dir="auto">Do you happen to know if this also resolves <div><a href="https://bugs.winehq.org/show_bug.cgi?id=52354">https://bugs.winehq.org/show_bug.cgi?id=52354</a></div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 21, 2022 at 5:32 PM Tim Clem <<a href="mailto:tclem@codeweavers.com">tclem@codeweavers.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">Signed-off-by: Tim Clem <<a href="mailto:tclem@codeweavers.com" target="_blank">tclem@codeweavers.com</a>><br>
---<br>
 dlls/winemac.drv/display.c | 107 ++++++++++++++++++-------------------<br>
 1 file changed, 52 insertions(+), 55 deletions(-)<br>
<br>
diff --git a/dlls/winemac.drv/display.c b/dlls/winemac.drv/display.c<br>
index 2ac8f32fa18a..a54e78c22376 100644<br>
--- a/dlls/winemac.drv/display.c<br>
+++ b/dlls/winemac.drv/display.c<br>
@@ -620,74 +620,71 @@ static CFArrayRef copy_display_modes(CGDirectDisplayID display)<br>
         count = CFArrayGetCount(modes);<br>
         for (i = 0; i < count; i++)<br>
         {<br>
-            BOOL better = TRUE;<br>
-            CGDisplayModeRef new_mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, i);<br>
-            BOOL new_is_original = display_mode_matches_descriptor(new_mode, desc);<br>
+            CFStringRef pixel_encoding;<br>
+            size_t width_points, height_points;<br>
+            size_t old_width_pixels, old_height_pixels, new_width_pixels, new_height_pixels;<br>
+            BOOL old_size_same, new_size_same;<br>
+            CGDisplayModeRef old_mode, new_mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, i);<br>
+            BOOL old_is_original, new_is_original = display_mode_matches_descriptor(new_mode, desc);<br>
             CFDictionaryRef key = create_mode_dict(new_mode, new_is_original);<br>
<br>
             /* If a given mode is the user's default, then always list it in preference to any similar<br>
                modes that may exist. */<br>
             if (new_is_original)<br>
-                better = TRUE;<br>
-            else<br>
-            {<br>
-                CFStringRef pixel_encoding = CGDisplayModeCopyPixelEncoding(new_mode);<br>
-                CGDisplayModeRef old_mode;<br>
+                goto better;<br>
<br>
-                if (pixel_encoding)<br>
+            pixel_encoding = CGDisplayModeCopyPixelEncoding(new_mode);<br>
+            if (pixel_encoding)<br>
+            {<br>
+                BOOL bpp30 = CFEqual(pixel_encoding, CFSTR(kIO30BitDirectPixels));<br>
+                CFRelease(pixel_encoding);<br>
+                if (bpp30)<br>
                 {<br>
-                    BOOL bpp30 = CFEqual(pixel_encoding, CFSTR(kIO30BitDirectPixels));<br>
-                    CFRelease(pixel_encoding);<br>
-                    if (bpp30)<br>
-                    {<br>
-                        /* This is an odd pixel encoding.  It seems it's only returned<br>
-                           when using kCGDisplayShowDuplicateLowResolutionModes.  It's<br>
-                           32bpp in terms of the actual raster layout, but it's 10<br>
-                           bits per component.  I think that no Windows program is<br>
-                           likely to need it and they will probably be confused by it.<br>
-                           Skip it. */<br>
-                        CFRelease(key);<br>
-                        continue;<br>
-                    }<br>
+                    /* This is an odd pixel encoding.  It seems it's only returned<br>
+                        when using kCGDisplayShowDuplicateLowResolutionModes.  It's<br>
+                        32bpp in terms of the actual raster layout, but it's 10<br>
+                        bits per component.  I think that no Windows program is<br>
+                        likely to need it and they will probably be confused by it.<br>
+                        Skip it. */<br>
+                    goto next;<br>
                 }<br>
+            }<br>
<br>
-                old_mode = (CGDisplayModeRef)CFDictionaryGetValue(modes_by_size, key);<br>
-                if (old_mode)<br>
-                {<br>
-                    BOOL old_is_original = display_mode_matches_descriptor(old_mode, desc);<br>
+            old_mode = (CGDisplayModeRef)CFDictionaryGetValue(modes_by_size, key);<br>
+            if (!old_mode)<br>
+                goto better;<br>
<br>
-                    if (old_is_original)<br>
-                        better = FALSE;<br>
-                    else<br>
-                    {<br>
-                        /* Otherwise, prefer a mode whose pixel size equals its point size over one which<br>
-                           is scaled. */<br>
-                        size_t width_points = CGDisplayModeGetWidth(new_mode);<br>
-                        size_t height_points = CGDisplayModeGetHeight(new_mode);<br>
-                        size_t new_width_pixels = CGDisplayModeGetPixelWidth(new_mode);<br>
-                        size_t new_height_pixels = CGDisplayModeGetPixelHeight(new_mode);<br>
-                        size_t old_width_pixels = CGDisplayModeGetPixelWidth(old_mode);<br>
-                        size_t old_height_pixels = CGDisplayModeGetPixelHeight(old_mode);<br>
-                        BOOL new_size_same = (new_width_pixels == width_points && new_height_pixels == height_points);<br>
-                        BOOL old_size_same = (old_width_pixels == width_points && old_height_pixels == height_points);<br>
-<br>
-                        if (new_size_same && !old_size_same)<br>
-                            better = TRUE;<br>
-                        else if (!new_size_same && old_size_same)<br>
-                            better = FALSE;<br>
-                        else<br>
-                        {<br>
-                            /* Otherwise, prefer the mode with the smaller pixel size. */<br>
-                            if (old_width_pixels < new_width_pixels || old_height_pixels < new_height_pixels)<br>
-                                better = FALSE;<br>
-                        }<br>
-                    }<br>
-                }<br>
+            /* Prefer the original mode over any similar mode. */<br>
+            old_is_original = display_mode_matches_descriptor(old_mode, desc);<br>
+            if (old_is_original)<br>
+                goto next;<br>
+<br>
+            /* Otherwise, prefer a mode whose pixel size equals its point size over one which<br>
+            is scaled. */<br>
+            width_points = CGDisplayModeGetWidth(new_mode);<br>
+            height_points = CGDisplayModeGetHeight(new_mode);<br>
+            new_width_pixels = CGDisplayModeGetPixelWidth(new_mode);<br>
+            new_height_pixels = CGDisplayModeGetPixelHeight(new_mode);<br>
+            old_width_pixels = CGDisplayModeGetPixelWidth(old_mode);<br>
+            old_height_pixels = CGDisplayModeGetPixelHeight(old_mode);<br>
+            new_size_same = (new_width_pixels == width_points && new_height_pixels == height_points);<br>
+            old_size_same = (old_width_pixels == width_points && old_height_pixels == height_points);<br>
+<br>
+            if (new_size_same && !old_size_same)<br>
+                goto better;<br>
+            else if (!new_size_same && old_size_same)<br>
+                goto next;<br>
+            else<br>
+            {<br>
+                /* Otherwise, prefer the mode with the smaller pixel size. */<br>
+                if (old_width_pixels < new_width_pixels || old_height_pixels < new_height_pixels)<br>
+                    goto next;<br>
             }<br>
<br>
-            if (better)<br>
-                CFDictionarySetValue(modes_by_size, key, new_mode);<br>
+better:<br>
+            CFDictionarySetValue(modes_by_size, key, new_mode);<br>
<br>
+next:<br>
             CFRelease(key);<br>
         }<br>
<br>
-- <br>
2.34.1<br>
<br>
<br>
</blockquote></div></div>