Signed-off-by: Tim Clem <tclem@codeweavers.com>
---
������dlls/winemac.drv/display.c | 107 ++++++++++++++++++-------------------
������1 file changed, 52 insertions(+), 55 deletions(-)
diff --git a/dlls/winemac.drv/display.c b/dlls/winemac.drv/display.c
index 2ac8f32fa18a..a54e78c22376 100644
--- a/dlls/winemac.drv/display.c
+++ b/dlls/winemac.drv/display.c
@@ -620,74 +620,71 @@ static CFArrayRef copy_display_modes(CGDirectDisplayID display)
������ ������ ������ ������ ������count = CFArrayGetCount(modes);
������ ������ ������ ������ ������for (i = 0; i < count; i++)
������ ������ ������ ������ ������{
-������ ������ ������ ������ ������ ������ BOOL better = TRUE;
-������ ������ ������ ������ ������ ������ CGDisplayModeRef new_mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, i);
-������ ������ ������ ������ ������ ������ BOOL new_is_original = display_mode_matches_descriptor(new_mode, desc);
+������ ������ ������ ������ ������ ������ CFStringRef pixel_encoding;
+������ ������ ������ ������ ������ ������ size_t width_points, height_points;
+������ ������ ������ ������ ������ ������ size_t old_width_pixels, old_height_pixels, new_width_pixels, new_height_pixels;
+������ ������ ������ ������ ������ ������ BOOL old_size_same, new_size_same;
+������ ������ ������ ������ ������ ������ CGDisplayModeRef old_mode, new_mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, i);
+������ ������ ������ ������ ������ ������ BOOL old_is_original, new_is_original = display_mode_matches_descriptor(new_mode, desc);
������ ������ ������ ������ ������ ������ ������CFDictionaryRef key = create_mode_dict(new_mode, new_is_original);
������ ������ ������ ������ ������ ������ ������/* If a given mode is the user's default, then always list it in preference to any similar
������ ������ ������ ������ ������ ������ ������ ������ modes that may exist. */
������ ������ ������ ������ ������ ������ ������if (new_is_original)
-������ ������ ������ ������ ������ ������ ������ ������ better = TRUE;
-������ ������ ������ ������ ������ ������ else
-������ ������ ������ ������ ������ ������ {
-������ ������ ������ ������ ������ ������ ������ ������ CFStringRef pixel_encoding = CGDisplayModeCopyPixelEncoding(new_mode);
-������ ������ ������ ������ ������ ������ ������ ������ CGDisplayModeRef old_mode;
+������ ������ ������ ������ ������ ������ ������ ������ goto better;
-������ ������ ������ ������ ������ ������ ������ ������ if (pixel_encoding)
+������ ������ ������ ������ ������ ������ pixel_encoding = CGDisplayModeCopyPixelEncoding(new_mode);
+������ ������ ������ ������ ������ ������ if (pixel_encoding)
+������ ������ ������ ������ ������ ������ {
+������ ������ ������ ������ ������ ������ ������ ������ BOOL bpp30 = CFEqual(pixel_encoding, CFSTR(kIO30BitDirectPixels));
+������ ������ ������ ������ ������ ������ ������ ������ CFRelease(pixel_encoding);
+������ ������ ������ ������ ������ ������ ������ ������ if (bpp30)
������ ������ ������ ������ ������ ������ ������ ������ ������{
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ BOOL bpp30 = CFEqual(pixel_encoding, CFSTR(kIO30BitDirectPixels));
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ CFRelease(pixel_encoding);
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ if (bpp30)
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ {
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ /* This is an odd pixel encoding.������ It seems it's only returned
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������when using kCGDisplayShowDuplicateLowResolutionModes.������ It's
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������32bpp in terms of the actual raster layout, but it's 10
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������bits per component.������ I think that no Windows program is
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������likely to need it and they will probably be confused by it.
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������Skip it. */
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ CFRelease(key);
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ continue;
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ }
+������ ������ ������ ������ ������ ������ ������ ������ ������ ������ /* This is an odd pixel encoding.������ It seems it's only returned
+������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ when using kCGDisplayShowDuplicateLowResolutionModes.������ It's
+������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ 32bpp in terms of the actual raster layout, but it's 10
+������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ bits per component.������ I think that no Windows program is
+������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ likely to need it and they will probably be confused by it.
+������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ Skip it. */
+������ ������ ������ ������ ������ ������ ������ ������ ������ ������ goto next;
������ ������ ������ ������ ������ ������ ������ ������ ������}
+������ ������ ������ ������ ������ ������ }
-������ ������ ������ ������ ������ ������ ������ ������ old_mode = (CGDisplayModeRef)CFDictionaryGetValue(modes_by_size, key);
-������ ������ ������ ������ ������ ������ ������ ������ if (old_mode)
-������ ������ ������ ������ ������ ������ ������ ������ {
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ BOOL old_is_original = display_mode_matches_descriptor(old_mode, desc);
+������ ������ ������ ������ ������ ������ old_mode = (CGDisplayModeRef)CFDictionaryGetValue(modes_by_size, key);
+������ ������ ������ ������ ������ ������ if (!old_mode)
+������ ������ ������ ������ ������ ������ ������ ������ goto better;
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ if (old_is_original)
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ better = FALSE;
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ else
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ {
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ /* Otherwise, prefer a mode whose pixel size equals its point size over one which
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������is scaled. */
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ size_t width_points = CGDisplayModeGetWidth(new_mode);
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ size_t height_points = CGDisplayModeGetHeight(new_mode);
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ size_t new_width_pixels = CGDisplayModeGetPixelWidth(new_mode);
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ size_t new_height_pixels = CGDisplayModeGetPixelHeight(new_mode);
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ size_t old_width_pixels = CGDisplayModeGetPixelWidth(old_mode);
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ size_t old_height_pixels = CGDisplayModeGetPixelHeight(old_mode);
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ BOOL new_size_same = (new_width_pixels == width_points && new_height_pixels == height_points);
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ BOOL old_size_same = (old_width_pixels == width_points && old_height_pixels == height_points);
-
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ if (new_size_same && !old_size_same)
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ better = TRUE;
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ else if (!new_size_same && old_size_same)
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ better = FALSE;
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ else
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ {
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ /* Otherwise, prefer the mode with the smaller pixel size. */
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ if (old_width_pixels < new_width_pixels || old_height_pixels < new_height_pixels)
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ better = FALSE;
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ }
-������ ������ ������ ������ ������ ������ ������ ������ ������ ������ }
-������ ������ ������ ������ ������ ������ ������ ������ }
+������ ������ ������ ������ ������ ������ /* Prefer the original mode over any similar mode. */
+������ ������ ������ ������ ������ ������ old_is_original = display_mode_matches_descriptor(old_mode, desc);
+������ ������ ������ ������ ������ ������ if (old_is_original)
+������ ������ ������ ������ ������ ������ ������ ������ goto next;
+
+������ ������ ������ ������ ������ ������ /* Otherwise, prefer a mode whose pixel size equals its point size over one which
+������ ������ ������ ������ ������ ������ is scaled. */
+������ ������ ������ ������ ������ ������ width_points = CGDisplayModeGetWidth(new_mode);
+������ ������ ������ ������ ������ ������ height_points = CGDisplayModeGetHeight(new_mode);
+������ ������ ������ ������ ������ ������ new_width_pixels = CGDisplayModeGetPixelWidth(new_mode);
+������ ������ ������ ������ ������ ������ new_height_pixels = CGDisplayModeGetPixelHeight(new_mode);
+������ ������ ������ ������ ������ ������ old_width_pixels = CGDisplayModeGetPixelWidth(old_mode);
+������ ������ ������ ������ ������ ������ old_height_pixels = CGDisplayModeGetPixelHeight(old_mode);
+������ ������ ������ ������ ������ ������ new_size_same = (new_width_pixels == width_points && new_height_pixels == height_points);
+������ ������ ������ ������ ������ ������ old_size_same = (old_width_pixels == width_points && old_height_pixels == height_points);
+
+������ ������ ������ ������ ������ ������ if (new_size_same && !old_size_same)
+������ ������ ������ ������ ������ ������ ������ ������ goto better;
+������ ������ ������ ������ ������ ������ else if (!new_size_same && old_size_same)
+������ ������ ������ ������ ������ ������ ������ ������ goto next;
+������ ������ ������ ������ ������ ������ else
+������ ������ ������ ������ ������ ������ {
+������ ������ ������ ������ ������ ������ ������ ������ /* Otherwise, prefer the mode with the smaller pixel size. */
+������ ������ ������ ������ ������ ������ ������ ������ if (old_width_pixels < new_width_pixels || old_height_pixels < new_height_pixels)
+������ ������ ������ ������ ������ ������ ������ ������ ������ ������ goto next;
������ ������ ������ ������ ������ ������ ������}
-������ ������ ������ ������ ������ ������ if (better)
-������ ������ ������ ������ ������ ������ ������ ������ CFDictionarySetValue(modes_by_size, key, new_mode);
+better:
+������ ������ ������ ������ ������ ������ CFDictionarySetValue(modes_by_size, key, new_mode);
+next:
������ ������ ������ ������ ������ ������ ������CFRelease(key);
������ ������ ������ ������ ������}
--
2.34.1