summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2011-09-29 00:59:37 -0400
committerCosimo Cecchi <cosimoc@gnome.org>2011-10-17 09:49:31 -0400
commita77c094bc82baf3403321420662837e96c6e5306 (patch)
tree302797974879c6ea13df8a8e45e05bb26fe71021
parent2ab73b016dab823eeff47e8b641cb226ec4b482a (diff)
downloadnautilus-a77c094bc82baf3403321420662837e96c6e5306.tar.gz
places-sidebar: disconnect volume monitor signals on dispose
The GIO volume monitor can survive the sidebar, so we need to disconnect its signals handlers on dispose. https://bugzilla.gnome.org/show_bug.cgi?id=652320
-rw-r--r--src/nautilus-places-sidebar.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/nautilus-places-sidebar.c b/src/nautilus-places-sidebar.c
index 4ebe02379..33b9086cd 100644
--- a/src/nautilus-places-sidebar.c
+++ b/src/nautilus-places-sidebar.c
@@ -465,6 +465,8 @@ update_places (NautilusPlacesSidebar *sidebar)
GList *network_mounts;
NautilusFile *file;
+ DEBUG ("Updating places sidebar");
+
model = NULL;
last_uri = NULL;
select_path = NULL;
@@ -3311,7 +3313,6 @@ nautilus_places_sidebar_dispose (GObject *object)
}
g_clear_object (&sidebar->store);
- g_clear_object (&sidebar->volume_monitor);
g_clear_object (&sidebar->bookmarks);
g_clear_object (&sidebar->filter_model);
@@ -3329,6 +3330,29 @@ nautilus_places_sidebar_dispose (GObject *object)
desktop_setting_changed_callback,
sidebar);
+ if (sidebar->volume_monitor != NULL) {
+ g_signal_handlers_disconnect_by_func (sidebar->volume_monitor,
+ volume_added_callback, sidebar);
+ g_signal_handlers_disconnect_by_func (sidebar->volume_monitor,
+ volume_removed_callback, sidebar);
+ g_signal_handlers_disconnect_by_func (sidebar->volume_monitor,
+ volume_changed_callback, sidebar);
+ g_signal_handlers_disconnect_by_func (sidebar->volume_monitor,
+ mount_added_callback, sidebar);
+ g_signal_handlers_disconnect_by_func (sidebar->volume_monitor,
+ mount_removed_callback, sidebar);
+ g_signal_handlers_disconnect_by_func (sidebar->volume_monitor,
+ mount_changed_callback, sidebar);
+ g_signal_handlers_disconnect_by_func (sidebar->volume_monitor,
+ drive_disconnected_callback, sidebar);
+ g_signal_handlers_disconnect_by_func (sidebar->volume_monitor,
+ drive_connected_callback, sidebar);
+ g_signal_handlers_disconnect_by_func (sidebar->volume_monitor,
+ drive_changed_callback, sidebar);
+
+ g_clear_object (&sidebar->volume_monitor);
+ }
+
G_OBJECT_CLASS (nautilus_places_sidebar_parent_class)->dispose (object);
}