[gnome-online-accounts/gnome-3-8] Revert "Revert "goaidentity: Fix deadlock in goaalarm on_cancelled""
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-online-accounts/gnome-3-8] Revert "Revert "goaidentity: Fix deadlock in goaalarm on_cancelled""
- Date: Fri, 20 Sep 2013 17:51:35 +0000 (UTC)
commit 9d30af10535e29eb2a6601d03e24173815ac1c75
Author: Ray Strode <rstrode redhat com>
Date: Fri Sep 20 13:44:18 2013 -0400
Revert "Revert "goaidentity: Fix deadlock in goaalarm on_cancelled""
This reverts commit 7436669dde08abd5d4c6fe4716f43263b3567161.
src/goaidentity/goaalarm.c | 21 ++++++++++++++++++++-
1 files changed, 20 insertions(+), 1 deletions(-)
---
diff --git a/src/goaidentity/goaalarm.c b/src/goaidentity/goaalarm.c
index c8992cd..9ccb3b6 100644
--- a/src/goaidentity/goaalarm.c
+++ b/src/goaidentity/goaalarm.c
@@ -256,12 +256,31 @@ goa_alarm_init (GoaAlarm *self)
g_rec_mutex_init (&self->priv->lock);
}
+static gboolean
+async_alarm_cancel_idle_cb (gpointer user_data)
+{
+ GoaAlarm *self = user_data;
+
+ clear_scheduled_wakeups (self);
+ return G_SOURCE_REMOVE;
+}
+
static void
on_cancelled (GCancellable *cancellable, gpointer user_data)
{
GoaAlarm *self = GOA_ALARM (user_data);
+ GMainContext *main_context;
+ GSource *idle_source;
- clear_scheduled_wakeups (self);
+ main_context = g_main_context_ref_thread_default ();
+
+ idle_source = g_idle_source_new ();
+ g_source_set_priority (idle_source, G_PRIORITY_HIGH_IDLE);
+ g_source_set_callback (idle_source, async_alarm_cancel_idle_cb, g_object_ref (self), g_object_unref);
+ g_source_attach (idle_source, main_context);
+ g_source_unref (idle_source);
+
+ g_main_context_unref (main_context);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]