brasero r1224 - in trunk: . src



Author: philippr
Date: Sun Aug 31 19:30:24 2008
New Revision: 1224
URL: http://svn.gnome.org/viewvc/brasero?rev=1224&view=rev

Log:

	Fix a problem with disc copy using same src and dest driven (brasero not
	accepting blank disc for destination).
	BRASERO_BURN_FLAG_BLANK_BEFORE_WRITING was on by default which would of
	course be unsupported by a BLANK medium. So we are more lenient now with
	this flag

	* src/burn-caps.c (brasero_burn_caps_new_task),
	(brasero_caps_try_output_with_blanking),
	(brasero_burn_caps_get_flags):


Modified:
   trunk/ChangeLog
   trunk/src/burn-caps.c

Modified: trunk/src/burn-caps.c
==============================================================================
--- trunk/src/burn-caps.c	(original)
+++ trunk/src/burn-caps.c	Sun Aug 31 19:30:24 2008
@@ -1280,6 +1280,11 @@
 	if (!brasero_burn_caps_flags_check_for_drive (session))
 		BRASERO_BURN_CAPS_NOT_SUPPORTED_LOG (session);
 
+	/* Here remove BRASERO_BURN_FLAG_BLANK_BEFORE_WRITE since we'll handle
+	 * any possible need for blanking just afterwards if it doesn't work */
+	session_flags &= ~(BRASERO_BURN_FLAG_BLANK_BEFORE_WRITE|
+			   BRASERO_BURN_FLAG_FAST_BLANK);
+
 	list = brasero_caps_find_best_link (last_caps,
 					    self->priv->group_id,
 					    NULL,
@@ -1307,6 +1312,7 @@
 		/* apparently nothing can be done to reach our goal. Maybe that
 		 * is because we first have to blank the disc. If so add a blank 
 		 * task to the others as a first step */
+		session_flags = brasero_burn_session_get_flags (session);
 		if (!(session_flags & BRASERO_BURN_FLAG_BLANK_BEFORE_WRITE)
 		||    brasero_burn_caps_can_blank (self, session) != BRASERO_BURN_OK)
 			BRASERO_BURN_CAPS_NOT_SUPPORTED_LOG_ERROR (session, error);
@@ -1808,6 +1814,12 @@
 	BraseroBurnFlag session_flags;
 
 	session_flags = brasero_burn_session_get_flags (session);
+
+	/* The case with prior blanking is checked later so no need for the next
+	 * 2 flags */
+	session_flags &= ~(BRASERO_BURN_FLAG_BLANK_BEFORE_WRITE|
+			   BRASERO_BURN_FLAG_FAST_BLANK);
+
 	result = brasero_caps_try_output (session_flags,
 					  output,
 					  input,
@@ -1815,6 +1827,8 @@
 	if (result)
 		return result;
 
+	session_flags = brasero_burn_session_get_flags (session);
+
 	/* we reached this point in two cases:
 	 * - if the disc cannot be handled
 	 * - if some flags are not handled
@@ -2399,11 +2413,18 @@
 	supported_flags |= BRASERO_BURN_FLAG_EJECT;
 	media = brasero_burn_session_get_dest_media (session);
 
+	/* Here remove the BRASERO_BURN_FLAG_BLANK_BEFORE_WRITE since that case
+	 * will be handled later in case of failure */
+	session_flags &= ~(BRASERO_BURN_FLAG_BLANK_BEFORE_WRITE|
+			   BRASERO_BURN_FLAG_FAST_BLANK);
+
 	result = brasero_caps_get_flags_for_disc (session_flags,
 						  media,
 						  &input,
 						  &supported_flags,
 						  &compulsory_flags);
+	session_flags = brasero_burn_session_get_flags (session);
+
 	if (result == BRASERO_BURN_OK) {
 		if (media & (BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA)) {
 			gboolean operation;
@@ -2492,12 +2513,15 @@
 		 * then write on its own. Basically that works only with
 		 * overwrite formatted discs, DVD+RW, ...) */
 
-		if (!(media & (BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA|BRASERO_MEDIUM_UNFORMATTED))) {
+		if (!(media & (BRASERO_MEDIUM_HAS_AUDIO|
+			       BRASERO_MEDIUM_HAS_DATA|
+			       BRASERO_MEDIUM_UNFORMATTED))) {
 			/* media must have data/audio */
 			return BRASERO_BURN_NOT_SUPPORTED;
 		}
 
-		if (session_flags & (BRASERO_BURN_FLAG_MERGE|BRASERO_BURN_FLAG_APPEND)) {
+		if (session_flags & (BRASERO_BURN_FLAG_MERGE|
+				     BRASERO_BURN_FLAG_APPEND)) {
 			/* There is nothing we can do here */
 			return BRASERO_BURN_NOT_SUPPORTED;
 		}



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