Browse Source

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.

Sam Lantinga 11 years ago
parent
commit
65133ebc1b
1 changed files with 14 additions and 0 deletions
  1. 14 0
      src/video/cocoa/SDL_cocoawindow.m

+ 14 - 0
src/video/cocoa/SDL_cocoawindow.m

@@ -1544,6 +1544,20 @@ Cocoa_SetWindowFullscreenSpace(SDL_Window * window, SDL_bool state)
 
     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];