diff options
Diffstat (limited to 'libmm-glib/mm-manager.c')
-rw-r--r-- | libmm-glib/mm-manager.c | 15 |
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; } |