From f34f9e640b2f11ce9035bb5ce15e5000f731c58f Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 10 Feb 2011 22:49:14 -0800 Subject: [PATCH] Fixed cocoa trying to shuffling windows when going fullscreen on the main display. --- src/video/cocoa/SDL_cocoamodes.m | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/video/cocoa/SDL_cocoamodes.m b/src/video/cocoa/SDL_cocoamodes.m index f6c8c3983..ddb762255 100644 --- a/src/video/cocoa/SDL_cocoamodes.m +++ b/src/video/cocoa/SDL_cocoamodes.m @@ -258,14 +258,23 @@ Cocoa_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode) /* Restoring desktop mode */ CGDisplaySwitchToMode(displaydata->display, data->moderef); - CGDisplayRelease(displaydata->display); + if (CGDisplayIsMain(displaydata->display)) { + CGReleaseAllDisplays(); + } else { + 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 (CGDisplayIsMain(displaydata->display)) { + /* If we don't capture all displays, Cocoa tries to rearrange windows... *sigh* */ + result = CGCaptureAllDisplays(); + } else { + result = CGDisplayCapture(displaydata->display); + } if (result != kCGErrorSuccess) { CG_SetError("CGDisplayCapture()", result); goto ERR_NO_CAPTURE;