brasero r1243 - in trunk: . src



Author: philippr
Date: Wed Sep  3 20:05:05 2008
New Revision: 1243
URL: http://svn.gnome.org/viewvc/brasero?rev=1243&view=rev

Log:
	Reload flags when image format changes or is detected

	* src/brasero-image-option-dialog.c
	(brasero_image_option_dialog_set_track):
	* src/burn-session.c (brasero_burn_session_clear_current_track),
	(brasero_burn_session_add_track):
	* src/burn-session.h:


Modified:
   trunk/ChangeLog
   trunk/src/brasero-image-option-dialog.c
   trunk/src/burn-session.c
   trunk/src/burn-session.h

Modified: trunk/src/brasero-image-option-dialog.c
==============================================================================
--- trunk/src/brasero-image-option-dialog.c	(original)
+++ trunk/src/brasero-image-option-dialog.c	Wed Sep  3 20:05:05 2008
@@ -91,15 +91,19 @@
 
 	priv = BRASERO_IMAGE_OPTION_DIALOG_PRIVATE (dialog);
 
-	if (!priv->track) {
-		priv->track = brasero_track_new (BRASERO_TRACK_TYPE_IMAGE);
-		brasero_burn_session_add_track (priv->session, priv->track);
+	/* add a track every time to send a signal */
+	if (priv->track) {
+		brasero_burn_session_clear_current_track (priv->session);
+		brasero_track_unref (priv->track);
 	}
 
+	/* set image type before adding so that signal has the right type */
+	priv->track = brasero_track_new (BRASERO_TRACK_TYPE_IMAGE);
 	brasero_track_set_image_source (priv->track,
 					image,
 					toc,
 					format);
+	brasero_burn_session_add_track (priv->session, priv->track);
 }
 
 static void

Modified: trunk/src/burn-session.c
==============================================================================
--- trunk/src/burn-session.c	(original)
+++ trunk/src/burn-session.c	Wed Sep  3 20:05:05 2008
@@ -247,6 +247,21 @@
 		       0);
 }
 
+void
+brasero_burn_session_clear_current_track (BraseroBurnSession *self)
+{
+	BraseroBurnSessionPrivate *priv;
+
+	g_return_val_if_fail (BRASERO_IS_BURN_SESSION (self), BRASERO_BURN_ERR);
+
+	priv = BRASERO_BURN_SESSION_PRIVATE (self);
+
+	brasero_burn_session_stop_src_drive_monitoring (self);
+	g_slist_foreach (priv->tracks, (GFunc) brasero_track_unref, NULL);
+	g_slist_free (priv->tracks);
+	priv->tracks = NULL;
+}
+
 BraseroBurnResult
 brasero_burn_session_add_track (BraseroBurnSession *self,
 				BraseroTrack *new_track)
@@ -279,7 +294,8 @@
 	brasero_burn_session_stop_src_drive_monitoring (self);
 
 	/* if there is already a track, then we replace it on condition that it
-	 * has the same type */
+	 * has the same type and it's not AUDIO (only one allowed to have many)
+	 */
 	if (brasero_track_get_type (new_track, NULL) != BRASERO_TRACK_TYPE_AUDIO
 	||  brasero_burn_session_get_input_type (self, NULL) != BRASERO_TRACK_TYPE_AUDIO) {
 		g_slist_foreach (priv->tracks, (GFunc) brasero_track_unref, NULL);

Modified: trunk/src/burn-session.h
==============================================================================
--- trunk/src/burn-session.h	(original)
+++ trunk/src/burn-session.h	Wed Sep  3 20:05:05 2008
@@ -78,6 +78,8 @@
 BraseroBurnResult
 brasero_burn_session_add_track (BraseroBurnSession *session,
 				BraseroTrack *track);
+void
+brasero_burn_session_clear_current_track (BraseroBurnSession *session);
 
 GSList *
 brasero_burn_session_get_tracks (BraseroBurnSession *session);



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