forked from AuroraMiddleware/gtk
quartz: fix a race condition when waking up the CGRunLoop
Wake up the run loop unconditionally (don't check if it is waiting) because it might go into waiting state right after we checked for it. Fixes GIMP startup (which has a lot of GIOChannel I/O but zero NSEvents) from several minutes to a few seconds.
This commit is contained in:
parent
7546eeaa62
commit
0729cdc9a1
@ -207,9 +207,12 @@ signal_main_thread (void)
|
||||
*/
|
||||
if (!run_loop_polling_async)
|
||||
CFRunLoopSourceSignal (select_main_thread_source);
|
||||
|
||||
if (CFRunLoopIsWaiting (main_thread_run_loop))
|
||||
CFRunLoopWakeUp (main_thread_run_loop);
|
||||
|
||||
/* Don't check for CFRunLoopIsWaiting() here because it causes a
|
||||
* race condition (the loop could go into waiting state right after
|
||||
* we checked).
|
||||
*/
|
||||
CFRunLoopWakeUp (main_thread_run_loop);
|
||||
}
|
||||
|
||||
static void *
|
||||
|
Loading…
Reference in New Issue
Block a user