mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-29 20:27:12 +01:00
SDL - fix re-entrancy into SDL_UpdateFullscreenMode under OSX. During HideWindow we get a RESTORED event which then turns fullscreen back on causing a hang in Cocoa_SetWindowFullscreenSpace waiting for the fullscreen transition to finish.
This commit is contained in:
parent
5b780063e1
commit
7552947654
@ -93,6 +93,7 @@ struct SDL_Window
|
|||||||
SDL_Surface *surface;
|
SDL_Surface *surface;
|
||||||
SDL_bool surface_valid;
|
SDL_bool surface_valid;
|
||||||
|
|
||||||
|
SDL_bool is_hiding;
|
||||||
SDL_bool is_destroying;
|
SDL_bool is_destroying;
|
||||||
|
|
||||||
SDL_WindowShaper *shaper;
|
SDL_WindowShaper *shaper;
|
||||||
|
@ -1105,6 +1105,10 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen)
|
|||||||
|
|
||||||
CHECK_WINDOW_MAGIC(window,);
|
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__
|
#ifdef __MACOSX__
|
||||||
if (Cocoa_SetWindowFullscreenSpace(window, fullscreen)) {
|
if (Cocoa_SetWindowFullscreenSpace(window, fullscreen)) {
|
||||||
window->last_fullscreen_flags = window->flags;
|
window->last_fullscreen_flags = window->flags;
|
||||||
@ -1833,11 +1837,13 @@ SDL_HideWindow(SDL_Window * window)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window->is_hiding = SDL_TRUE;
|
||||||
SDL_UpdateFullscreenMode(window, SDL_FALSE);
|
SDL_UpdateFullscreenMode(window, SDL_FALSE);
|
||||||
|
|
||||||
if (_this->HideWindow) {
|
if (_this->HideWindow) {
|
||||||
_this->HideWindow(_this, window);
|
_this->HideWindow(_this, window);
|
||||||
}
|
}
|
||||||
|
window->is_hiding = SDL_FALSE;
|
||||||
SDL_SendWindowEvent(window, SDL_WINDOWEVENT_HIDDEN, 0, 0);
|
SDL_SendWindowEvent(window, SDL_WINDOWEVENT_HIDDEN, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user