From a3c2dd172ef660e77ddb6cbd8cf3cafb61a561e9 Mon Sep 17 00:00:00 2001 From: Amarnath Valluri Date: Mon, 22 Jul 2013 13:29:03 +0300 Subject: [PATCH] daemon: Close plugin poxy on remote proxy dead. --- src/daemon/plugins/gsignond-plugin-proxy.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/daemon/plugins/gsignond-plugin-proxy.c b/src/daemon/plugins/gsignond-plugin-proxy.c index 23dc999..7e2e225 100644 --- a/src/daemon/plugins/gsignond-plugin-proxy.c +++ b/src/daemon/plugins/gsignond-plugin-proxy.c @@ -262,6 +262,18 @@ gsignond_plugin_proxy_status_changed_callback ( priv->active_process_userdata); } +static void +_on_remote_plugin_dead (gpointer data, GObject *dead_obj) +{ +DBG("{"); + GSignondPluginProxy *proxy = NULL; + if (data && (proxy = GSIGNOND_PLUGIN_PROXY(data))) { + proxy->priv->plugin = NULL; + g_object_unref (G_OBJECT(data)); + } +DBG("}"); +} + static GObject * gsignond_plugin_proxy_constructor ( GType gtype, @@ -309,6 +321,8 @@ gsignond_plugin_proxy_constructor ( } g_free (type); + g_object_weak_ref (G_OBJECT(priv->plugin), _on_remote_plugin_dead, obj); + } return obj; } @@ -379,6 +393,7 @@ gsignond_plugin_proxy_dispose ( priv->active_session = NULL; } if (priv->plugin) { + g_object_weak_unref (G_OBJECT(priv->plugin), _on_remote_plugin_dead, self); g_object_unref (priv->plugin); priv->plugin = NULL; } -- 2.7.4