Kaynağa Gözat

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 yıl önce
ebeveyn
işleme
65133ebc1b
1 değiştirilmiş dosya ile 14 ekleme ve 0 silme
  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];