changeset 4939:de89a6f73c06

Fixed restoring the desktop resolution when toggling fullscreen mode
author Sam Lantinga <slouken@libsdl.org>
date Sat, 01 Jan 2011 16:41:29 -0800
parents 2af0032520d8
children 77f079051f60
files src/video/cocoa/SDL_cocoamodes.m
diffstat 1 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/video/cocoa/SDL_cocoamodes.m	Fri Dec 31 16:51:03 2010 -0800
+++ b/src/video/cocoa/SDL_cocoamodes.m	Sat Jan 01 16:41:29 2011 -0800
@@ -248,27 +248,29 @@
     SDL_DisplayModeData *data = (SDL_DisplayModeData *) mode->driverdata;
     CGDisplayFadeReservationToken fade_token = kCGDisplayFadeReservationInvalidToken;
     CGError result;
-    
+
     /* Fade to black to hide resolution-switching flicker */
     if (CGAcquireDisplayFadeReservation(5, &fade_token) == kCGErrorSuccess) {
         CGDisplayFade(fade_token, 0.3, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, TRUE);
     }
 
-    /* Put up the blanking window (a window above all other windows) */
-    result = CGDisplayCapture(displaydata->display);
-    if (result != kCGErrorSuccess) {
-        CG_SetError("CGDisplayCapture()", result);
-        goto ERR_NO_CAPTURE;
-    }
-
     if (data == display->desktop_mode.driverdata) {
         /* Restoring desktop mode */
+        CGDisplaySwitchToMode(displaydata->display, data->moderef);
+
         CGDisplayRelease(displaydata->display);
 
         if (CGDisplayIsMain(displaydata->display)) {
             ShowMenuBar();
         }
     } else {
+        /* Put up the blanking window (a window above all other windows) */
+        result = CGDisplayCapture(displaydata->display);
+        if (result != kCGErrorSuccess) {
+            CG_SetError("CGDisplayCapture()", result);
+            goto ERR_NO_CAPTURE;
+        }
+
         /* Do the physical switch */
         result = CGDisplaySwitchToMode(displaydata->display, data->moderef);
         if (result != kCGErrorSuccess) {
@@ -326,7 +328,6 @@
             Cocoa_SetDisplayMode(_this, display, &display->desktop_mode);
         }
     }
-    CGReleaseAllDisplays();
     ShowMenuBar();
 }