mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 11:26:16 +01:00
Do not wake up main loop if change is from same thread
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 <fziglio@redhat.com> https://bugzilla.gnome.org/show_bug.cgi?id=761102
This commit is contained in:
parent
b121a7916d
commit
e4ee3079c5
@ -1837,7 +1837,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);
|
||||
}
|
||||
}
|
||||
@ -4342,7 +4343,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);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -4402,7 +4404,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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user