From 4b647c97a867f7a8d11e2a08f49ab343f3de7730 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Mon, 4 Dec 2006 20:33:06 +0000 Subject: [PATCH] 2006-12-04 Dan Williams * src/supplicant-manager/nm-supplicant-interface.c - (nm_supplicant_interface_set_property): track signal handler ID - (nm_supplicant_interface_dispose): remove signal handler on dispose git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2162 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 6 ++++++ .../nm-supplicant-interface.c | 19 +++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7a5c4c7bae..4703cf326a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-12-04 Dan Williams + + * src/supplicant-manager/nm-supplicant-interface.c + - (nm_supplicant_interface_set_property): track signal handler ID + - (nm_supplicant_interface_dispose): remove signal handler on dispose + 2006-12-04 Dan Williams * src/supplicant-manager/nm-supplicant-interface.[ch] diff --git a/src/supplicant-manager/nm-supplicant-interface.c b/src/supplicant-manager/nm-supplicant-interface.c index 41f4fa505a..508276ee53 100644 --- a/src/supplicant-manager/nm-supplicant-interface.c +++ b/src/supplicant-manager/nm-supplicant-interface.c @@ -90,6 +90,7 @@ enum { struct _NMSupplicantInterfacePrivate { NMSupplicantManager * smgr; + gulong smgr_state_sig_handler; NMDBusManager * dbus_mgr; NMDevice * dev; @@ -210,16 +211,18 @@ nm_supplicant_interface_set_property (GObject * object, GParamSpec * pspec) { NMSupplicantInterface * self = NM_SUPPLICANT_INTERFACE (object); + gulong id; switch (prop_id) { case PROP_SUPPLICANT_MANAGER: self->priv->smgr = NM_SUPPLICANT_MANAGER (g_value_get_object (value)); g_object_ref (G_OBJECT (self->priv->smgr)); - g_signal_connect (G_OBJECT (self->priv->smgr), - "state", - G_CALLBACK (nm_supplicant_interface_smgr_state_changed), - self); + id = g_signal_connect (G_OBJECT (self->priv->smgr), + "state", + G_CALLBACK (nm_supplicant_interface_smgr_state_changed), + self); + self->priv->smgr_state_sig_handler = id; break; case PROP_DEVICE: self->priv->dev = NM_DEVICE (g_value_get_object (value)); @@ -291,6 +294,8 @@ nm_supplicant_interface_dispose (GObject *object) } if (self->priv->smgr) { + g_signal_handler_disconnect (G_OBJECT (self->priv->smgr), + self->priv->smgr_state_sig_handler); g_object_unref (self->priv->smgr); self->priv->smgr = NULL; } @@ -304,8 +309,10 @@ nm_supplicant_interface_dispose (GObject *object) clear_pcalls (self); if (self->priv->dbus_mgr) { - nm_dbus_manager_remove_signal_handler (self->priv->dbus_mgr, - self->priv->wpas_sig_handler_id); + if (self->priv->wpas_sig_handler_id) { + nm_dbus_manager_remove_signal_handler (self->priv->dbus_mgr, + self->priv->wpas_sig_handler_id); + } g_object_unref (self->priv->dbus_mgr); self->priv->dbus_mgr = NULL;