aboutsummaryrefslogtreecommitdiff
path: root/libmm-glib/mm-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmm-glib/mm-manager.c')
-rw-r--r--libmm-glib/mm-manager.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/libmm-glib/mm-manager.c b/libmm-glib/mm-manager.c
index fe2932db..d294b32f 100644
--- a/libmm-glib/mm-manager.c
+++ b/libmm-glib/mm-manager.c
@@ -89,6 +89,15 @@ get_proxy_type (GDBusObjectManagerClient *manager,
/*****************************************************************************/
+static void
+cleanup_modem_manager1_proxy (MMManager *self)
+{
+ if (self->priv->manager_iface_proxy) {
+ g_signal_handlers_disconnect_by_func (self, cleanup_modem_manager1_proxy, NULL);
+ g_clear_object (&self->priv->manager_iface_proxy);
+ }
+}
+
static gboolean
ensure_modem_manager1_proxy (MMManager *self,
GError **error)
@@ -124,6 +133,12 @@ ensure_modem_manager1_proxy (MMManager *self,
g_free (object_path);
g_free (name);
+ if (self->priv->manager_iface_proxy)
+ g_signal_connect (self,
+ "notify::name-owner",
+ G_CALLBACK (cleanup_modem_manager1_proxy),
+ NULL);
+
return !!self->priv->manager_iface_proxy;
}