Kaynağa Gözat

Emscripten: reset fullscreen_window when leaving fullscreen
If the browser left fullscreen mode by the user pressing ESC, the next
call to SDL_SetWindowFullscreen(1) will fail as it thinks the window is
already fullscreen. (#65)

Charlie Birks 6 yıl önce
ebeveyn
işleme
80d690a2a0
1 değiştirilmiş dosya ile 9 ekleme ve 0 silme
  1. 9 0
      src/video/emscripten/SDL_emscriptenevents.c

+ 9 - 0
src/video/emscripten/SDL_emscriptenevents.c

@@ -551,6 +551,8 @@ static EM_BOOL
 Emscripten_HandleFullscreenChange(int eventType, const EmscriptenFullscreenChangeEvent *fullscreenChangeEvent, void *userData)
 {
     SDL_WindowData *window_data = userData;
+    SDL_VideoDisplay *display;
+
     if(fullscreenChangeEvent->isFullscreen)
     {
         window_data->window->flags |= window_data->requested_fullscreen_mode;
@@ -563,6 +565,13 @@ Emscripten_HandleFullscreenChange(int eventType, const EmscriptenFullscreenChang
     else
     {
         window_data->window->flags &= ~FULLSCREEN_MASK;
+
+        /* reset fullscreen window if the browser left fullscreen */
+        display = SDL_GetDisplayForWindow(window_data->window);
+
+        if (display->fullscreen_window == window_data->window) {
+            display->fullscreen_window = NULL;
+        }
     }
 
     return 0;