[brasero] Fix a crash with File Filtered widget which did not get disconnected properly



commit 9da7543006aa306e3fbd00ca74b1f37291ec773c
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Tue Jul 14 13:39:55 2009 +0200

    Fix a crash with File Filtered widget which did not get disconnected properly

 src/brasero-file-filtered.c |   27 ++++++++++++++++++++-------
 1 files changed, 20 insertions(+), 7 deletions(-)
---
diff --git a/src/brasero-file-filtered.c b/src/brasero-file-filtered.c
index 4e62f42..b475b10 100644
--- a/src/brasero-file-filtered.c
+++ b/src/brasero-file-filtered.c
@@ -235,9 +235,10 @@ brasero_file_filtered_init (BraseroFileFiltered *object)
 	gtk_tree_view_set_rubber_banding (GTK_TREE_VIEW (priv->tree), TRUE);
 
 	g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->tree)),
-						       "changed",
-						       G_CALLBACK (brasero_file_filtered_selection_changed_cb),
-						       object);
+	                  "changed",
+	                  G_CALLBACK (brasero_file_filtered_selection_changed_cb),
+	                  object);
+
 	column = gtk_tree_view_column_new ();
 	gtk_tree_view_column_set_expand (column, TRUE);
 
@@ -332,19 +333,20 @@ brasero_file_filtered_set_property (GObject *object,
 
 	switch (property_id) {
 	case PROP_TRACK: /* Readable and only writable at creation time */
-		priv->track = g_object_ref (g_value_get_object (value));
+		priv->track = g_value_get_object (value);
 		model = brasero_track_data_cfg_get_filtered_model (priv->track);
 		gtk_tree_view_set_model (GTK_TREE_VIEW (priv->tree), model);
-		g_object_unref (model);
 
-		g_signal_connect (g_value_get_object (value),
+		g_signal_connect (model,
 				  "row-deleted",
 				  G_CALLBACK (brasero_file_filtered_row_deleted),
 				  object);
-		g_signal_connect (g_value_get_object (value),
+		g_signal_connect (model,
 				  "row-inserted",
 				  G_CALLBACK (brasero_file_filtered_row_inserted),
 				  object);
+
+		g_object_unref (model);
 		break;
 
 	default:
@@ -379,6 +381,17 @@ brasero_file_filtered_finalize (GObject *object)
 
 	priv = BRASERO_FILE_FILTERED_PRIVATE (object);
 	if (priv->track) {
+		GtkTreeModel *model;
+
+		model = brasero_track_data_cfg_get_filtered_model (priv->track);
+		g_signal_handlers_disconnect_by_func (model,
+		                                      brasero_file_filtered_row_deleted,
+		                                      object);
+		g_signal_handlers_disconnect_by_func (model,
+		                                      brasero_file_filtered_row_inserted,
+		                                      object);
+		g_object_unref (model);
+
 		g_object_unref (priv->track);
 		priv->track = NULL;
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]