Prevent Cocoa from waiting indefinitely when stopping the event loop

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Elliott 2003-10-09 15:56:38 +00:00
parent 1cc75a7981
commit 9670dfc4be

View File

@ -88,6 +88,24 @@ void wxEventLoop::Exit(int rc)
NSApplication *cocoaApp = [NSApplication sharedApplication];
wxLogDebug("wxEventLoop::Exit isRunning=%d", (int)[cocoaApp isRunning]);
// This works around a bug in Cocoa.
[NSEvent startPeriodicEventsAfterDelay:0.0 withPeriod:5.0];
/* Notes:
This function is most often called during idle time. See
wxApp::CocoaInstallIdleHandler() for an overview of the implications
of idle event time. In short, Cocoa must have at least one real event
in the queue (of which an idle "event" is not) in order for it to
realize that the application has been stopped. The above method
generates the first periodic event immediately, and would generate
further events every 5 seconds if not for the fact that the next
method stops the event loop.
If the application was active when closed then this is unnecessary
because it would receive a deactivate event anyway. However, if the
application was not active when closed, then no events would be
added to the queue by Cocoa and thus the application would wait
indefinitely for the next event.
*/
[cocoaApp stop: cocoaApp];
}