summaryrefslogtreecommitdiff
path: root/services
diff options
authorAndrew Gaul <andrew@gaul.org>2013-07-21 19:35:13 -0700
committerAndrew Gaul <andrew@gaul.org>2013-07-21 19:35:13 -0700
commit74cc24d38e8541450bc8df67a8014a046f89fa51 (patch)
tree627220af4f19e164d7b3e68382182a65c49e62a4 /services
parentce8a93f2465c4b9d9f484b3d4edf4d8089d182fd (diff)
Disconnect signals connected in panel-service.c:on_entry_added
This addresses a memory leak observed in: https://bugs.launchpad.net/unity/+bug/1203607 (bzr r3429.3.1)
Diffstat (limited to 'services')
-rw-r--r--services/panel-service.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/services/panel-service.c b/services/panel-service.c
index da3dfe6e6..f7158c86d 100644
--- a/services/panel-service.c
+++ b/services/panel-service.c
@@ -994,6 +994,15 @@ on_entry_removed (IndicatorObject *object,
* FIXME this in libappmenu.so to avoid to send an "entry-removed" signal
* when switching the focus from a window to one of its dialog children */
+ if (GTK_IS_LABEL (entry->label))
+ {
+ g_signal_handlers_disconnect_by_data (entry->label, object);
+ }
+ if (GTK_IS_IMAGE (entry->image))
+ {
+ g_signal_handlers_disconnect_by_data (entry->image, object);
+ }
+
gchar *entry_id = get_indicator_entry_id_by_entry (entry);
g_hash_table_remove (self->priv->id2entry_hash, entry_id);
g_free (entry_id);