From baf92d09d69de0d9f9b2d0f77fc62c21fdef4da8 Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Sat, 9 Nov 2013 20:18:34 +0100 Subject: [PATCH] gtestdbus: Properly close server connections Otherwise g_test_dbus_down() following a g_test_dbus_stop() will hang until it times out. https://bugzilla.gnome.org/show_bug.cgi?id=711807 --- gio/gtestdbus.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gio/gtestdbus.c b/gio/gtestdbus.c index bff39f1b0..98ee8c9fd 100644 --- a/gio/gtestdbus.c +++ b/gio/gtestdbus.c @@ -67,14 +67,15 @@ on_weak_notify_timeout (gpointer user_data) } static gboolean -unref_on_idle (gpointer object) +dispose_on_idle (gpointer object) { + g_object_run_dispose (object); g_object_unref (object); return FALSE; } static gboolean -_g_object_unref_and_wait_weak_notify (gpointer object) +_g_object_dispose_and_wait_weak_notify (gpointer object) { WeakNotifyData data; guint timeout_id; @@ -86,7 +87,7 @@ _g_object_unref_and_wait_weak_notify (gpointer object) /* Drop the ref in an idle callback, this is to make sure the mainloop * is already running when weak notify happens */ - g_idle_add (unref_on_idle, object); + g_idle_add (dispose_on_idle, object); /* Make sure we don't block forever */ timeout_id = g_timeout_add (30 * 1000, on_weak_notify_timeout, &data); @@ -813,7 +814,7 @@ g_test_dbus_down (GTestDBus *self) stop_daemon (self); if (connection != NULL) - _g_object_unref_and_wait_weak_notify (connection); + _g_object_dispose_and_wait_weak_notify (connection); g_test_dbus_unset (); self->priv->up = FALSE;