# HG changeset patch # User planetmaker # Date 1315745564 0 # Node ID 05a2b40c0df92f5635efca92fd4c6d2165ff7a36 # Parent 73132c970152fd470dcd35f67abd7b453d34e0e2 (svn r22921) -Fix: [OSX] Don't allow the old fullscreen mode also not as fallback on OSX 10.7. Also add a few sprinkles of coding style accross cocoa display drivers diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -143,7 +143,7 @@ [ menuItem setSubmenu:windowMenu ]; [ [ NSApp mainMenu ] addItem:menuItem ]; - if(MacOSVersionIsAtLeast(10, 7, 0)) { + if (MacOSVersionIsAtLeast(10, 7, 0)) { /* The OS will change the name of this menu item automatically */ [ windowMenu addItemWithTitle:@"Fullscreen" action:@selector(toggleFullScreen:) keyEquivalent:@"^f" ]; } @@ -241,23 +241,20 @@ CocoaSubdriver *ret; #endif -#ifdef ENABLE_COCOA_QUARTZ -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 +#ifdef ENABLE_COCOA_QUARTZ && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4) /* The reason for the version mismatch is due to the fact that the 10.4 binary needs to work on 10.5 as well. */ if (MacOSVersionIsAtLeast(10, 5, 0)) { ret = QZ_CreateWindowQuartzSubdriver(width, height, bpp); if (ret != NULL) return ret; } #endif -#endif #ifdef ENABLE_COCOA_QUICKDRAW ret = QZ_CreateWindowQuickdrawSubdriver(width, height, bpp); if (ret != NULL) return ret; #endif -#ifdef ENABLE_COCOA_QUARTZ -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 +#ifdef ENABLE_COCOA_QUARTZ && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4) /* * If we get here we are running 10.4 or earlier and either openttd was compiled without the QuickDraw driver * or it failed to load for some reason. Fall back to Quartz if possible even though that driver is slower. @@ -267,7 +264,6 @@ if (ret != NULL) return ret; } #endif -#endif return NULL; } @@ -307,11 +303,14 @@ ret = QZ_CreateWindowSubdriver(640, 480, bpp); if (ret != NULL) return ret; -#ifdef _DEBUG && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7) - /* Try fullscreen too when in debug mode */ - DEBUG(driver, 0, "Setting video mode failed, falling back to 640x480 fullscreen mode."); - ret = QZ_CreateFullscreenSubdriver(640, 480, bpp); - if (ret != NULL) return ret; +#ifdef _DEBUG + /* This Fullscreen mode crashes on OSX 10.7 */ + if !(MacOSVersionIsAtLeast(10, 7, 0) { + /* Try fullscreen too when in debug mode */ + DEBUG(driver, 0, "Setting video mode failed, falling back to 640x480 fullscreen mode."); + ret = QZ_CreateFullscreenSubdriver(640, 480, bpp); + if (ret != NULL) return ret; + } #endif return NULL; @@ -681,8 +680,8 @@ { NSPoint loc = [ self convertPoint:[ [ self window ] mouseLocationOutsideOfEventStream ] fromView:nil ]; BOOL inside = ([ self hitTest:loc ]==self); - if(inside) [ [ self window] makeFirstResponder:self ]; - trackingtag = [ self addTrackingRect:[self visibleRect] owner:self userData:nil assumeInside:inside ]; + if (inside) [ [ self window ] makeFirstResponder:self ]; + trackingtag = [ self addTrackingRect:[ self visibleRect ] owner:self userData:nil assumeInside:inside ]; } /** * Return responsibility for the application window to system @@ -713,7 +712,7 @@ */ - (void)viewDidMoveToWindow { - if([ self window ]) [ self setTrackingRect ]; + if ([ self window ]) [ self setTrackingRect ]; } /** * Make OpenTTD aware that it has control over the mouse diff --git a/src/video/cocoa/fullscreen.mm b/src/video/cocoa/fullscreen.mm --- a/src/video/cocoa/fullscreen.mm +++ b/src/video/cocoa/fullscreen.mm @@ -311,15 +311,15 @@ /* Since CGDisplayBaseAddress and CGDisplayBytesPerRow are no longer available on 10.7, * disable until a replacement can be found. */ - if (MacOSVersionIsAtLeast(10, 7, 0)) { - this->window_buffer = NULL; - this->window_pitch = NULL; - } else { + if (MacOSVersionIsAtLeast(10, 7, 0)) { + this->window_buffer = NULL; + this->window_pitch = NULL; + } else { #if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7) - this->window_buffer = CGDisplayBaseAddress(this->display_id); - this->window_pitch = CGDisplayBytesPerRow(this->display_id); + this->window_buffer = CGDisplayBaseAddress(this->display_id); + this->window_pitch = CGDisplayBytesPerRow(this->display_id); #endif - } + } this->device_width = CGDisplayPixelsWide(this->display_id); this->device_height = CGDisplayPixelsHigh(this->display_id);