This reduce the frequency the loop is waked up adding and removing file descriptors or timeouts. Considering that to support recursion events are removed from list and added again this reduce iteration number a lot.
Signed-off-by: Frediano Ziglio <fzig...@redhat.com> --- glib/gmain.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/glib/gmain.c b/glib/gmain.c index 29ccee0..1e9850f 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -1797,7 +1797,8 @@ g_source_set_ready_time (GSource *source, { /* Quite likely that we need to change the timeout on the poll */ if (!SOURCE_BLOCKED (source)) - g_wakeup_signal (context->wakeup); + if (context->owner && context->owner != G_THREAD_SELF) + g_wakeup_signal (context->wakeup); UNLOCK_CONTEXT (context); } } @@ -4259,7 +4260,8 @@ g_main_context_add_poll_unlocked (GMainContext *context, context->poll_changed = TRUE; /* Now wake up the main loop if it is waiting in the poll() */ - g_wakeup_signal (context->wakeup); + if (context->owner && context->owner != G_THREAD_SELF) + g_wakeup_signal (context->wakeup); } /** @@ -4319,7 +4321,8 @@ g_main_context_remove_poll_unlocked (GMainContext *context, context->poll_changed = TRUE; /* Now wake up the main loop if it is waiting in the poll() */ - g_wakeup_signal (context->wakeup); + if (context->owner && context->owner != G_THREAD_SELF) + g_wakeup_signal (context->wakeup); } /** -- 2.4.3 _______________________________________________ gtk-devel-list mailing list gtk-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-devel-list