diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 992b4f364..f552cb5b9 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -93,6 +93,7 @@ struct SDL_Window SDL_Surface *surface; SDL_bool surface_valid; + SDL_bool is_hiding; SDL_bool is_destroying; SDL_WindowShaper *shaper; diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index e50edc1bd..0c92a872d 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -1105,6 +1105,10 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) CHECK_WINDOW_MAGIC(window,); + /* if we are in the process of hiding don't go back to fullscreen */ + if ( window->is_hiding && fullscreen ) + return; + #ifdef __MACOSX__ if (Cocoa_SetWindowFullscreenSpace(window, fullscreen)) { window->last_fullscreen_flags = window->flags; @@ -1833,11 +1837,13 @@ SDL_HideWindow(SDL_Window * window) return; } + window->is_hiding = SDL_TRUE; SDL_UpdateFullscreenMode(window, SDL_FALSE); if (_this->HideWindow) { _this->HideWindow(_this, window); } + window->is_hiding = SDL_FALSE; SDL_SendWindowEvent(window, SDL_WINDOWEVENT_HIDDEN, 0, 0); }