diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 8dcba61c749f..dda352761896 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -845,18 +845,17 @@ - (BOOL)canBecomeKeyWindow /*** OSX INITIALIZATION ***/ /*** OSX INITIALIZATION ***/ /*** OSX INITIALIZATION ***/ - - current_videomode=p_desired; + window_delegate = [[GodotWindowDelegate alloc] init]; // Don't use accumulation buffer support; it's not accelerated // Aux buffers probably aren't accelerated either - unsigned int styleMask = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | (current_videomode.resizable?NSResizableWindowMask:0); + unsigned int styleMask = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | (p_desired.resizable?NSResizableWindowMask:0); window_object = [[GodotWindow alloc] - initWithContentRect:NSMakeRect(0, 0, current_videomode.width,current_videomode.height) + initWithContentRect:NSMakeRect(0, 0, p_desired.width, p_desired.height) styleMask:styleMask backing:NSBackingStoreBuffered defer:NO]; @@ -865,6 +864,13 @@ - (BOOL)canBecomeKeyWindow window_view = [[GodotContentView alloc] init]; + current_videomode = p_desired; + + // Adjust for display density + const NSRect fbRect = convertRectToBacking(NSMakeRect(0, 0, p_desired.width, p_desired.height)); + current_videomode.width = fbRect.size.width; + current_videomode.height = fbRect.size.height; + #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) { [window_view setWantsBestResolutionOpenGLSurface:YES];