brasero r954 - in trunk: . src



Author: philippr
Date: Sun Jul  6 16:33:24 2008
New Revision: 954
URL: http://svn.gnome.org/viewvc/brasero?rev=954&view=rev

Log:
	Check drive capabilities (Burn proof, just link only ATM)
	fix name of model in previous patch

	* src/burn-caps.c (brasero_burn_caps_flags_check_for_drive),
	(brasero_burn_caps_new_task),
	(brasero_burn_caps_is_input_supported),
	(brasero_burn_caps_is_output_supported),
	(brasero_burn_caps_is_session_supported),
	(brasero_burn_caps_flags_update_for_drive),
	(brasero_burn_caps_get_flags):
	* src/burn-drive.c (brasero_drive_has_safe_burn):
	* src/burn-drive.h:
	* src/burn-medium.c (brasero_medium_check_old_drive):

Modified:
   trunk/ChangeLog
   trunk/src/burn-caps.c
   trunk/src/burn-drive.c
   trunk/src/burn-drive.h
   trunk/src/burn-medium.c

Modified: trunk/src/burn-caps.c
==============================================================================
--- trunk/src/burn-caps.c	(original)
+++ trunk/src/burn-caps.c	Sun Jul  6 16:33:24 2008
@@ -90,6 +90,13 @@
 	return NULL;								\
 }
 
+#define BRASERO_BURN_CAPS_NOT_SUPPORTED_LOG_RES(session)			\
+{										\
+	brasero_burn_session_log (session, "Unsupported type of task operation"); \
+	BRASERO_BURN_LOG ("Unsupported type of task operation");		\
+	return BRASERO_BURN_NOT_SUPPORTED;					\
+}
+
 #define BRASERO_BURN_CAPS_NOT_SUPPORTED_LOG_ERROR(session, error)		\
 {										\
 	if (error)								\
@@ -1163,6 +1170,24 @@
 	return retval;
 }
 
+static gboolean
+brasero_burn_caps_flags_check_for_drive (BraseroBurnSession *session)
+{
+	BraseroDrive *drive;
+	BraseroBurnFlag flags;
+
+	drive = brasero_burn_session_get_burner (session);
+	if (!drive)
+		return TRUE;
+
+	flags = brasero_burn_session_get_flags (session);
+	if (!brasero_drive_has_safe_burn (drive)
+	&&  !(flags & BRASERO_BURN_FLAG_BURNPROOF))
+		return FALSE;
+
+	return TRUE;
+}
+
 GSList *
 brasero_burn_caps_new_task (BraseroBurnCaps *self,
 			    BraseroBurnSession *session,
@@ -1216,6 +1241,9 @@
 				    "Input set =");
 
 	session_flags = brasero_burn_session_get_flags (session);
+	if (!brasero_burn_caps_flags_check_for_drive (session))
+		BRASERO_BURN_CAPS_NOT_SUPPORTED_LOG (session);
+
 	list = brasero_caps_find_best_link (last_caps,
 					    self->priv->group_id,
 					    NULL,
@@ -1807,6 +1835,9 @@
 	BraseroTrackType output;
 	BraseroPluginIOFlag io_flags;
 
+	if (!brasero_burn_caps_flags_check_for_drive (session))
+		BRASERO_BURN_CAPS_NOT_SUPPORTED_LOG_RES (session);
+
 	if (!brasero_burn_session_is_dest_file (session)) {
 		output.type = BRASERO_TRACK_TYPE_DISC;
 		output.subtype.media = brasero_burn_session_get_dest_media (session);
@@ -1851,6 +1882,9 @@
 	BraseroTrackType input;
 	BraseroPluginIOFlag io_flags;
 
+	if (!brasero_burn_caps_flags_check_for_drive (session))
+		BRASERO_BURN_CAPS_NOT_SUPPORTED_LOG_RES (session);
+
 	/* Here flags don't matter as we don't record anything.
 	 * Even the IOFlags since that can be checked later with
 	 * brasero_burn_caps_get_flags.
@@ -1968,6 +2002,9 @@
 	if (brasero_burn_session_same_src_dest_drive (session))
 		return brasero_burn_caps_is_session_supported_same_src_dest (self, session);
 
+	if (!brasero_burn_caps_flags_check_for_drive (session))
+		BRASERO_BURN_CAPS_NOT_SUPPORTED_LOG_RES (session);
+
 	/* Here flags don't matter as we don't record anything.
 	 * Even the IOFlags since that can be checked later with
 	 * brasero_burn_caps_get_flags. */
@@ -2183,6 +2220,22 @@
 	return retval;
 }
 
+static BraseroBurnFlag
+brasero_burn_caps_flags_update_for_drive (BraseroBurnFlag flags,
+					  BraseroBurnSession *session)
+{
+	BraseroDrive *drive;
+
+	drive = brasero_burn_session_get_burner (session);
+	if (!drive)
+		return flags;
+
+	if (!brasero_drive_has_safe_burn (drive))
+		flags &= ~BRASERO_BURN_FLAG_BURNPROOF;
+
+	return flags;
+}
+
 static BraseroBurnResult
 brasero_caps_get_flags_for_disc (BraseroBurnFlag session_flags,
 				 BraseroMedia media,
@@ -2285,6 +2338,11 @@
 	session_flags = brasero_burn_session_get_flags (session);
 	BRASERO_BURN_LOG_FLAGS (session_flags, "FLAGS (session):");
 
+	if (!brasero_burn_caps_flags_check_for_drive (session)) {
+		BRASERO_BURN_LOG ("Session flags not supported");
+		return BRASERO_BURN_ERR;
+	}
+
 	/* sanity check:
 	 * - MERGE and BLANK are not possible together.
 	 *   MERGE wins (always)
@@ -2446,6 +2504,8 @@
 		compulsory_flags |= blank_compulsory;
 	}
 
+	supported_flags = brasero_burn_caps_flags_update_for_drive (supported_flags, session);
+
 	if (supported)
 		*supported = supported_flags;
 

Modified: trunk/src/burn-drive.c
==============================================================================
--- trunk/src/burn-drive.c	(original)
+++ trunk/src/burn-drive.c	Sun Jul  6 16:33:24 2008
@@ -360,6 +360,15 @@
 			      BRASERO_DRIVE_CAPS_DVDRW_PLUS_DL));
 }
 
+gboolean
+brasero_drive_has_safe_burn (BraseroDrive *self)
+{
+	BraseroDrivePrivate *priv;
+
+	priv = BRASERO_DRIVE_PRIVATE (self);
+	return TRUE;
+}
+
 static void
 brasero_drive_init (BraseroDrive *object)
 { }

Modified: trunk/src/burn-drive.h
==============================================================================
--- trunk/src/burn-drive.h	(original)
+++ trunk/src/burn-drive.h	Sun Jul  6 16:33:24 2008
@@ -104,6 +104,9 @@
 brasero_drive_can_write (BraseroDrive *drive);
 
 gboolean
+brasero_drive_has_safe_burn (BraseroDrive *drive);
+
+gboolean
 brasero_drive_is_door_open (BraseroDrive *drive);
 
 gboolean

Modified: trunk/src/burn-medium.c
==============================================================================
--- trunk/src/burn-medium.c	(original)
+++ trunk/src/burn-medium.c	Sun Jul  6 16:33:24 2008
@@ -886,7 +886,7 @@
 	if (!model)
 		return BRASERO_BURN_ERR;
 
-	if (!strcmp (model, "TEAC R55S")) {
+	if (!strcmp (model, "CD-R55S")) {
 		g_free (model);
 		priv->max_rd = BRASERO_SPEED_TO_RATE_CD (12);
 		priv->max_wrt = BRASERO_SPEED_TO_RATE_CD (4);



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