[brasero] Ensure harder that some signals get disconnected when switching sessions



commit 4a9f6a4d1583a649f9c778959adb55d3e8942a11
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Fri Sep 4 12:52:24 2009 +0200

    Ensure harder that some signals get disconnected when switching sessions

 src/brasero-audio-disc.c |   20 ++++++++++++--------
 src/brasero-video-disc.c |   19 +++++++++++--------
 2 files changed, 23 insertions(+), 16 deletions(-)
---
diff --git a/src/brasero-audio-disc.c b/src/brasero-audio-disc.c
index ea370f7..8907ce6 100644
--- a/src/brasero-audio-disc.c
+++ b/src/brasero-audio-disc.c
@@ -991,6 +991,7 @@ brasero_audio_disc_set_session_contents (BraseroDisc *disc,
 					 BraseroBurnSession *session)
 {
 	BraseroAudioDisc *audio;
+	GtkTreeModel *current_model;
 	BraseroVideoTreeModel *model;
 
 	audio = BRASERO_AUDIO_DISC (disc);
@@ -1001,16 +1002,19 @@ brasero_audio_disc_set_session_contents (BraseroDisc *disc,
 	if (audio->priv->add_playlist)
 		brasero_io_cancel_by_base (audio->priv->add_playlist);
 
-	if (!session) {
-		GtkTreeModel *model;
-		BraseroSessionCfg *session;
+	/* disconnect some signals */
+	current_model = gtk_tree_view_get_model (GTK_TREE_VIEW (audio->priv->tree));
+	if (current_model) {
+		BraseroSessionCfg *current_session;
 
-		model = gtk_tree_view_get_model (GTK_TREE_VIEW (audio->priv->tree));
-		session = brasero_video_tree_model_get_session (BRASERO_VIDEO_TREE_MODEL (model));
-		g_signal_handlers_disconnect_by_func (session,
-						      brasero_audio_disc_session_changed,
-						      disc);
+		current_session = brasero_video_tree_model_get_session (BRASERO_VIDEO_TREE_MODEL (current_model));
+		if (current_session)
+			g_signal_handlers_disconnect_by_func (current_session,
+							      brasero_audio_disc_session_changed,
+							      disc);
+	}
 
+	if (!session) {
 		gtk_tree_view_set_model (GTK_TREE_VIEW (audio->priv->tree), NULL);
 		return BRASERO_DISC_OK;
 	}
diff --git a/src/brasero-video-disc.c b/src/brasero-video-disc.c
index 776b478..9676921 100644
--- a/src/brasero-video-disc.c
+++ b/src/brasero-video-disc.c
@@ -1324,6 +1324,7 @@ brasero_video_disc_set_session_contents (BraseroDisc *self,
 					 BraseroBurnSession *session)
 {
 	BraseroVideoTreeModel *model;
+	GtkTreeModel *current_model;
 	BraseroVideoDiscPrivate *priv;
 
 	priv = BRASERO_VIDEO_DISC_PRIVATE (self);
@@ -1331,16 +1332,18 @@ brasero_video_disc_set_session_contents (BraseroDisc *self,
 	if (priv->load_dir)
 		brasero_io_cancel_by_base (priv->load_dir);
 
-	if (!session) {
-		GtkTreeModel *model;
-		BraseroSessionCfg *session;
+	current_model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->tree));
+	if (current_model) {
+		BraseroSessionCfg *current_session;
 
-		model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->tree));
-		session = brasero_video_tree_model_get_session (BRASERO_VIDEO_TREE_MODEL (model));
-		g_signal_handlers_disconnect_by_func (session,
-						      brasero_video_disc_session_changed,
-						      self);
+		current_session = brasero_video_tree_model_get_session (BRASERO_VIDEO_TREE_MODEL (current_model));
+		if (current_session)
+			g_signal_handlers_disconnect_by_func (current_session,
+							      brasero_video_disc_session_changed,
+							      self);
+	}
 
+	if (!session) {
 		gtk_tree_view_set_model (GTK_TREE_VIEW (priv->tree), NULL);
 		return BRASERO_DISC_OK;
 	}



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