Browse Source

macOS: get the correct display name on macOS 10.15+

Sam Lantinga 3 months ago
parent
commit
ba95c54f99
1 changed files with 10 additions and 0 deletions
  1. 10 0
      src/video/cocoa/SDL_cocoamodes.m

+ 10 - 0
src/video/cocoa/SDL_cocoamodes.m

@@ -283,6 +283,16 @@ static bool GetDisplayMode(CGDisplayModeRef vidmode, bool vidmodeCurrent, CFArra
 
 static char *Cocoa_GetDisplayName(CGDirectDisplayID displayID)
 {
+    if (@available(macOS 10.15, *)) {
+        NSScreen *screen = GetNSScreenForDisplayID(displayID);
+        if (screen) {
+            const char *name = [screen.localizedName UTF8String];
+            if (name) {
+                return SDL_strdup(name);
+            }
+        }
+    }
+
     // This API is deprecated in 10.9 with no good replacement (as of 10.15).
     io_service_t servicePort = CGDisplayIOServicePort(displayID);
     CFDictionaryRef deviceInfo = IODisplayCreateInfoDictionary(servicePort, kIODisplayOnlyPreferredName);