From 34c84145647ea961ab5fc32f03b34742b3f3a129 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Sun, 15 Mar 2009 10:46:33 -0500 Subject: Disconnecting our signals properly, avoids a crash --- src/app-menu-item.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/app-menu-item.c') diff --git a/src/app-menu-item.c b/src/app-menu-item.c index 9923075..0d5fb85 100644 --- a/src/app-menu-item.c +++ b/src/app-menu-item.c @@ -118,6 +118,14 @@ static void app_menu_item_finalize (GObject *object) { G_OBJECT_CLASS (app_menu_item_parent_class)->finalize (object); + + AppMenuItem * self = APP_MENU_ITEM(object); + AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); + + g_signal_handlers_disconnect_by_func(G_OBJECT(priv->listener), G_CALLBACK(indicator_added_cb), self); + g_signal_handlers_disconnect_by_func(G_OBJECT(priv->listener), G_CALLBACK(indicator_removed_cb), self); + + return; } AppMenuItem * @@ -131,7 +139,7 @@ app_menu_item_new (IndicateListener * listener, IndicateListenerServer * server) priv->server = server; g_signal_connect(G_OBJECT(listener), INDICATE_LISTENER_SIGNAL_INDICATOR_ADDED, G_CALLBACK(indicator_added_cb), self); - g_signal_connect(G_OBJECT(listener), INDICATE_LISTENER_SIGNAL_INDICATOR_REMOVED, G_CALLBACK(indicator_added_cb), self); + g_signal_connect(G_OBJECT(listener), INDICATE_LISTENER_SIGNAL_INDICATOR_REMOVED, G_CALLBACK(indicator_removed_cb), self); priv->name = gtk_label_new(INDICATE_LISTENER_SERVER_DBUS_NAME(server)); gtk_misc_set_alignment(GTK_MISC(priv->name), 0.0, 0.5); -- cgit v1.2.3