[Goodies-commits] r7604 - in gigolo/trunk: . src

Enrico Troeger enrico at xfce.org
Wed Jun 17 23:44:27 CEST 2009


Author: enrico
Date: 2009-06-17 21:44:27 +0000 (Wed, 17 Jun 2009)
New Revision: 7604

Modified:
   gigolo/trunk/ChangeLog
   gigolo/trunk/src/browsenetworkpanel.c
   gigolo/trunk/src/window.c
Log:
Properly clean up on destruction.

Modified: gigolo/trunk/ChangeLog
===================================================================
--- gigolo/trunk/ChangeLog	2009-06-17 21:34:07 UTC (rev 7603)
+++ gigolo/trunk/ChangeLog	2009-06-17 21:44:27 UTC (rev 7604)
@@ -3,6 +3,8 @@
  * src/backendgvfs.c, src/backendgvfs.h, src/bookmarkeditdialog.c:
    When querying Samba shares in the Connect/Bookmark Edit dialog,
    mount smb://hostname as necessary.
+ * src/browsenetworkpanel.c, src/window.c:
+   Properly clean up on destruction.
 
 
 2009-06-13  Enrico Tröger  <enrico(at)xfce(dot)org>

Modified: gigolo/trunk/src/browsenetworkpanel.c
===================================================================
--- gigolo/trunk/src/browsenetworkpanel.c	2009-06-17 21:34:07 UTC (rev 7603)
+++ gigolo/trunk/src/browsenetworkpanel.c	2009-06-17 21:44:27 UTC (rev 7604)
@@ -54,6 +54,8 @@
 	GtkWidget *popup_menu;
 	GtkWidget *tree;
 	GtkTreeStore *store;
+
+	gulong browse_network_signal_id;
 };
 
 enum
@@ -63,6 +65,7 @@
 };
 
 static void tree_selection_changed_cb(GtkTreeSelection *selection, GigoloBrowseNetworkPanel *panel);
+static void browse_network_finished_cb(G_GNUC_UNUSED GigoloBackendGVFS *bnd, GigoloBrowseNetworkPanel *panel);
 
 
 G_DEFINE_TYPE(GigoloBrowseNetworkPanel, gigolo_browse_network_panel, GTK_TYPE_VBOX);
@@ -71,10 +74,20 @@
 static void gigolo_browse_network_panel_finalize(GObject *object)
 {
 	GigoloBrowseNetworkPanelPrivate *priv = GIGOLO_BROWSE_NETWORK_PANEL_GET_PRIVATE(object);
+	GigoloBackendGVFS *backend;
 
 	gtk_widget_destroy(priv->popup_menu);
 	gdk_cursor_unref(priv->wait_cursor);
 
+	backend = gigolo_window_get_backend(priv->parent);
+	if (backend != NULL && IS_GIGOLO_BACKEND_GVFS(backend) && priv->browse_network_signal_id > 0)
+	{
+		g_signal_handler_disconnect(gigolo_window_get_backend(priv->parent),
+			priv->browse_network_signal_id);
+		priv->browse_network_signal_id = 0;
+	}
+
+
 	G_OBJECT_CLASS(gigolo_browse_network_panel_parent_class)->finalize(object);
 }
 
@@ -466,6 +479,8 @@
 	GtkToolItem *toolitem;
 	GigoloBrowseNetworkPanelPrivate *priv = GIGOLO_BROWSE_NETWORK_PANEL_GET_PRIVATE(panel);
 
+	priv->browse_network_signal_id = 0;
+
 	toolbar = gtk_toolbar_new();
 	gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ);
 	gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar), GTK_ICON_SIZE_BUTTON);
@@ -535,7 +550,8 @@
 	priv->parent = parent;
 
 	backend = gigolo_window_get_backend(parent);
-	g_signal_connect(backend, "browse-network-finished", G_CALLBACK(browse_network_finished_cb), self);
+	priv->browse_network_signal_id = g_signal_connect(backend, "browse-network-finished",
+		G_CALLBACK(browse_network_finished_cb), self);
 
 	return self;
 }

Modified: gigolo/trunk/src/window.c
===================================================================
--- gigolo/trunk/src/window.c	2009-06-17 21:34:07 UTC (rev 7603)
+++ gigolo/trunk/src/window.c	2009-06-17 21:44:27 UTC (rev 7604)
@@ -145,6 +145,7 @@
 	g_object_unref(priv->systray_icon);
 	g_object_unref(priv->systray_icon_popup_menu);
 	g_object_unref(priv->backend_gvfs);
+	priv->backend_gvfs = NULL;
 
 	gtk_widget_destroy(GTK_WIDGET(window));
 




More information about the Goodies-commits mailing list