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:
parent
1cc75a7981
commit
9670dfc4be
@ -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];
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user