diff --git a/src/platform/macos.mm b/src/platform/macos.mm index bce2a6b5b..0f963b97f 100644 --- a/src/platform/macos.mm +++ b/src/platform/macos.mm @@ -109,17 +109,17 @@ extern "C" bool MacCheckAdminAuthorization() { return Elevate(NULL, NULL); } +// https://gist.github.com/briankc/025415e25900750f402235dbf1b74e42 extern "C" float BackingScaleFactor(uint32_t display) { - NSScreen* s = [NSScreen mainScreen]; - if (s) return [s backingScaleFactor]; - /* on my mini mac, display==2, but only 1 screen - display -= 1; NSArray *screens = [NSScreen screens]; - if (display >= 0 && display < [screens count]) { - NSScreen* s = [screens objectAtIndex:display]; - if (s) return [s backingScaleFactor]; + for (NSScreen *screen in screens) { + NSDictionary *deviceDescription = [screen deviceDescription]; + NSNumber *screenNumber = [deviceDescription objectForKey:@"NSScreenNumber"]; + CGDirectDisplayID screenDisplayID = [screenNumber unsignedIntValue]; + if (screenDisplayID == display) { + return [screen backingScaleFactor]; + } } - */ return 1; }