From 3974a5e84d3170f70481f7f68052ad53130d478b Mon Sep 17 00:00:00 2001 From: Kevin Hartman Date: Tue, 18 Feb 2014 22:48:38 -0500 Subject: [PATCH] OSX current_videomode size is now initialized with correct resolution based on backing store. Fixes issue where content does not correctly fit in window on retina displays. --- platform/osx/os_osx.mm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 8dcba61c749..dda35276189 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -845,18 +845,17 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi /*** 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 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi 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];