From 2b47c8360c70a8455d61fa4bb94ec57b93bf228e Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Mon, 3 Apr 2017 13:32:32 -0400 Subject: [PATCH] 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 --- glib/gmain.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/glib/gmain.c b/glib/gmain.c index 4f22ac501..ab2908e52 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -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); }