Commit 35a1f5fb authored by Sam Lantinga's avatar Sam Lantinga

Fixed restoring the desktop resolution when toggling fullscreen mode

parent 2ccdb31c
...@@ -248,27 +248,29 @@ Cocoa_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode) ...@@ -248,27 +248,29 @@ Cocoa_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode)
SDL_DisplayModeData *data = (SDL_DisplayModeData *) mode->driverdata; SDL_DisplayModeData *data = (SDL_DisplayModeData *) mode->driverdata;
CGDisplayFadeReservationToken fade_token = kCGDisplayFadeReservationInvalidToken; CGDisplayFadeReservationToken fade_token = kCGDisplayFadeReservationInvalidToken;
CGError result; CGError result;
/* Fade to black to hide resolution-switching flicker */ /* Fade to black to hide resolution-switching flicker */
if (CGAcquireDisplayFadeReservation(5, &fade_token) == kCGErrorSuccess) { if (CGAcquireDisplayFadeReservation(5, &fade_token) == kCGErrorSuccess) {
CGDisplayFade(fade_token, 0.3, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, TRUE); 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) { if (data == display->desktop_mode.driverdata) {
/* Restoring desktop mode */ /* Restoring desktop mode */
CGDisplaySwitchToMode(displaydata->display, data->moderef);
CGDisplayRelease(displaydata->display); CGDisplayRelease(displaydata->display);
if (CGDisplayIsMain(displaydata->display)) { if (CGDisplayIsMain(displaydata->display)) {
ShowMenuBar(); ShowMenuBar();
} }
} else { } 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 */ /* Do the physical switch */
result = CGDisplaySwitchToMode(displaydata->display, data->moderef); result = CGDisplaySwitchToMode(displaydata->display, data->moderef);
if (result != kCGErrorSuccess) { if (result != kCGErrorSuccess) {
...@@ -326,7 +328,6 @@ Cocoa_QuitModes(_THIS) ...@@ -326,7 +328,6 @@ Cocoa_QuitModes(_THIS)
Cocoa_SetDisplayMode(_this, display, &display->desktop_mode); Cocoa_SetDisplayMode(_this, display, &display->desktop_mode);
} }
} }
CGReleaseAllDisplays();
ShowMenuBar(); ShowMenuBar();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment