Wait for the fullscreen transition to complete before allowing the application to continue.
authorSam Lantinga <slouken@libsdl.org>
Wed, 04 Jun 2014 09:39:08 -0700
changeset 8810 901ac824a18b
parent 8809 054ec268f363
child 8811 3f0b8a86c65b
Wait for the fullscreen transition to complete before allowing the application to continue. This fixes Alt-Enter in the Steam streaming client, which sets the window size and position immediately after switching out of fullscreen mode.
src/video/cocoa/SDL_cocoawindow.m
--- a/src/video/cocoa/SDL_cocoawindow.m	Wed Jun 04 01:56:14 2014 -0700
+++ b/src/video/cocoa/SDL_cocoawindow.m	Wed Jun 04 09:39:08 2014 -0700
@@ -1544,6 +1544,20 @@
 
     if ([data->listener setFullscreenSpace:(state ? YES : NO)]) {
         succeeded = SDL_TRUE;
+
+        /* Wait for the transition to complete, so application changes
+           take effect properly (e.g. setting the window size, etc.)
+         */
+        const int limit = 10000;
+        int count = 0;
+        while ([data->listener isInFullscreenSpaceTransition]) {
+            if ( ++count == limit ) {
+                /* Uh oh, transition isn't completing. Should we assert? */
+                break;
+            }
+            SDL_Delay(1);
+            SDL_PumpEvents();
+        }
     }
 
     [pool release];