mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-09-01 19:33:38 +00:00
cocoa: Run the CFRunLoop for 20ms during SDL_Quit().
This lets the OS remove windows that were destroyed in cases where we aren't terminating the process right after calling SDL_Quit(). Otherwise, they'll stay on the screen, unresponsive. Apparently there is some animation state that needs to complete, and that is handled via the runloop. Fixes #10081.
This commit is contained in:
@@ -235,6 +235,14 @@ void Cocoa_VideoQuit(SDL_VideoDevice *_this)
|
||||
{
|
||||
@autoreleasepool {
|
||||
SDL_CocoaVideoData *data = (__bridge SDL_CocoaVideoData *)_this->internal;
|
||||
|
||||
// Run the CFRunLoop a little, so last-minute window animations can run, etc, but we hopefully don't change any significant state.
|
||||
// This needs to run multiple times over a time period, it's not enough to give it a longer timeout and use "false" for returnAfterSourceHandled.
|
||||
const Uint64 start = SDL_GetTicks();
|
||||
do {
|
||||
CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.0, false);
|
||||
} while ((SDL_GetTicks() - start) <= 20);
|
||||
|
||||
Cocoa_QuitModes(_this);
|
||||
Cocoa_QuitKeyboard(_this);
|
||||
Cocoa_QuitGCMouse();
|
||||
|
||||
Reference in New Issue
Block a user