gmain: Signal wakeups if context has never been acquired as well

Should address backwards compatibility with how qemu is using
`GMainContext`.

See https://bugzilla.gnome.org/show_bug.cgi?id=761102#c14

Input-into-keyboard-by: Colin Walters <walters@verbum.org>
This commit is contained in:
Paolo Bonzini 2017-04-03 13:32:32 -04:00 committed by Colin Walters
parent 3d7534eae5
commit 0c0469b56d

View File

@ -1127,7 +1127,17 @@ source_remove_from_context (GSource *source,
static void
conditional_wakeup (GMainContext *context)
{
if (context->owner && context->owner != G_THREAD_SELF)
/* We want to signal wakeups in two cases:
* 1 When the context is owned by another thread
* 2 When the context owner is NULL (two subcases)
* 2a Possible if the context has never been acquired
* 2b Or if the context has no current owner
*
* At least case 2a) is necessary to ensure backwards compatibility with
* qemu's use of GMainContext.
* https://bugzilla.gnome.org/show_bug.cgi?id=761102#c14
*/
if (context->owner != G_THREAD_SELF)
g_wakeup_signal (context->wakeup);
}