Mercurial > sdl-ios-xcode
comparison src/video/cocoa/SDL_cocoamodes.m @ 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 | 514f811a4887 |
children | be02be2ea897 |
comparison
equal
deleted
inserted
replaced
4938:2af0032520d8 | 4939:de89a6f73c06 |
---|---|
246 { | 246 { |
247 SDL_DisplayData *displaydata = (SDL_DisplayData *) display->driverdata; | 247 SDL_DisplayData *displaydata = (SDL_DisplayData *) display->driverdata; |
248 SDL_DisplayModeData *data = (SDL_DisplayModeData *) mode->driverdata; | 248 SDL_DisplayModeData *data = (SDL_DisplayModeData *) mode->driverdata; |
249 CGDisplayFadeReservationToken fade_token = kCGDisplayFadeReservationInvalidToken; | 249 CGDisplayFadeReservationToken fade_token = kCGDisplayFadeReservationInvalidToken; |
250 CGError result; | 250 CGError result; |
251 | 251 |
252 /* Fade to black to hide resolution-switching flicker */ | 252 /* Fade to black to hide resolution-switching flicker */ |
253 if (CGAcquireDisplayFadeReservation(5, &fade_token) == kCGErrorSuccess) { | 253 if (CGAcquireDisplayFadeReservation(5, &fade_token) == kCGErrorSuccess) { |
254 CGDisplayFade(fade_token, 0.3, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, TRUE); | 254 CGDisplayFade(fade_token, 0.3, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, TRUE); |
255 } | 255 } |
256 | 256 |
257 /* Put up the blanking window (a window above all other windows) */ | |
258 result = CGDisplayCapture(displaydata->display); | |
259 if (result != kCGErrorSuccess) { | |
260 CG_SetError("CGDisplayCapture()", result); | |
261 goto ERR_NO_CAPTURE; | |
262 } | |
263 | |
264 if (data == display->desktop_mode.driverdata) { | 257 if (data == display->desktop_mode.driverdata) { |
265 /* Restoring desktop mode */ | 258 /* Restoring desktop mode */ |
259 CGDisplaySwitchToMode(displaydata->display, data->moderef); | |
260 | |
266 CGDisplayRelease(displaydata->display); | 261 CGDisplayRelease(displaydata->display); |
267 | 262 |
268 if (CGDisplayIsMain(displaydata->display)) { | 263 if (CGDisplayIsMain(displaydata->display)) { |
269 ShowMenuBar(); | 264 ShowMenuBar(); |
270 } | 265 } |
271 } else { | 266 } else { |
267 /* Put up the blanking window (a window above all other windows) */ | |
268 result = CGDisplayCapture(displaydata->display); | |
269 if (result != kCGErrorSuccess) { | |
270 CG_SetError("CGDisplayCapture()", result); | |
271 goto ERR_NO_CAPTURE; | |
272 } | |
273 | |
272 /* Do the physical switch */ | 274 /* Do the physical switch */ |
273 result = CGDisplaySwitchToMode(displaydata->display, data->moderef); | 275 result = CGDisplaySwitchToMode(displaydata->display, data->moderef); |
274 if (result != kCGErrorSuccess) { | 276 if (result != kCGErrorSuccess) { |
275 CG_SetError("CGDisplaySwitchToMode()", result); | 277 CG_SetError("CGDisplaySwitchToMode()", result); |
276 goto ERR_NO_SWITCH; | 278 goto ERR_NO_SWITCH; |
324 | 326 |
325 if (display->current_mode.driverdata != display->desktop_mode.driverdata) { | 327 if (display->current_mode.driverdata != display->desktop_mode.driverdata) { |
326 Cocoa_SetDisplayMode(_this, display, &display->desktop_mode); | 328 Cocoa_SetDisplayMode(_this, display, &display->desktop_mode); |
327 } | 329 } |
328 } | 330 } |
329 CGReleaseAllDisplays(); | |
330 ShowMenuBar(); | 331 ShowMenuBar(); |
331 } | 332 } |
332 | 333 |
333 /* vi: set ts=4 sw=4 expandtab: */ | 334 /* vi: set ts=4 sw=4 expandtab: */ |