From 44606b2e5219d114cfaae2c8fbc48c7fffb2a9c0 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Mon, 28 Oct 2013 11:44:16 -0700 Subject: [PATCH] GCancellable: drop lock for callback during connect() Don't hold the lock when calling the user's callback during g_cancellable_connect() for the case that the cancellable has already fired. Taken from a patch by Alex Larsson. https://bugzilla.gnome.org/show_bug.cgi?id=705395 --- gio/gcancellable.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gio/gcancellable.c b/gio/gcancellable.c index fc56b87..2e52141 100644 --- a/gio/gcancellable.c +++ b/gio/gcancellable.c @@ -557,6 +557,8 @@ g_cancellable_connect (GCancellable *cancellable, void (*_callback) (GCancellable *cancellable, gpointer user_data); + g_mutex_unlock (&cancellable_mutex); + _callback = (void *)callback; id = 0; @@ -571,9 +573,10 @@ g_cancellable_connect (GCancellable *cancellable, callback, data, (GClosureNotify) data_destroy_func, 0); + + g_mutex_unlock (&cancellable_mutex); } - g_mutex_unlock (&cancellable_mutex); return id; } -- 1.8.3.1