brasero r1373 - in trunk: . src src/plugins/cdrkit src/plugins/cdrtools src/plugins/checksum src/plugins/dvdauthor src/plugins/dvdcss src/plugins/growisofs src/plugins/libburnia



Author: philippr
Date: Sun Oct 12 18:55:20 2008
New Revision: 1373
URL: http://svn.gnome.org/viewvc/brasero?rev=1373&view=rev

Log:

	Some additional changes for DVD-RAM and BDs support

	* src/brasero-burn-dialog.c (brasero_burn_dialog_update_info),
	(brasero_burn_dialog_get_media_type_string),
	(brasero_burn_dialog_progress_changed_real),
	(brasero_burn_dialog_notify_success):
	* src/brasero-disc-option-dialog.c
	(brasero_disc_option_dialog_update_multi):
	* src/brasero-drive-properties.c
	(brasero_drive_properties_format_disc_speed):
	* src/brasero-progress.c
	(brasero_burn_progress_display_session_info),
	(brasero_burn_progress_set_status):
	* src/brasero-progress.h:
	* src/brasero-tool-dialog.c (brasero_tool_dialog_set_progress):
	* src/burn-caps.c (brasero_burn_caps_get_required_media_type),
	(brasero_burn_caps_get_default_output_format),
	(brasero_burn_caps_sort):
	* src/burn-debug.c (brasero_debug_medium_info_to_string):
	* src/burn-job.c (brasero_job_get_speed),
	(brasero_job_get_max_speed):
	* src/burn-media.c (brasero_media_new_status),
	(brasero_media_new_attribute), (brasero_media_new_subtype),
	(brasero_media_get_all_list):
	* src/burn-media.h:
	* src/burn-medium.c (brasero_medium_track_get_info),
	(brasero_medium_track_set_leadout),
	(brasero_medium_get_medium_type):
	* src/burn-medium.h:
	* src/burn-plugin.h:
	* src/burn.c (brasero_burn_is_loaded_dest_media_supported),
	(brasero_burn_reload_dest_media),
	(brasero_burn_same_src_dest_reload_medium):
	* src/plugins/cdrkit/burn-genisoimage.c
	(brasero_genisoimage_export_caps):
	* src/plugins/cdrkit/burn-readom.c (brasero_readom_export_caps):
	* src/plugins/cdrtools/burn-mkisofs.c
	(brasero_mkisofs_export_caps):
	* src/plugins/cdrtools/burn-readcd.c (brasero_readcd_export_caps):
	* src/plugins/checksum/burn-checksum-files.c
	(brasero_checksum_files_export_caps):
	* src/plugins/dvdauthor/burn-dvdauthor.c
	(brasero_dvd_author_export_caps):
	* src/plugins/dvdcss/burn-dvdcss.c (brasero_dvdcss_export_caps):
	* src/plugins/growisofs/burn-dvd-rw-format.c
	(brasero_dvd_rw_format_export_caps):
	* src/plugins/growisofs/burn-growisofs.c
	(brasero_growisofs_export_caps):
	* src/plugins/libburnia/burn-libburn.c
	(brasero_libburn_export_caps):
	* src/plugins/libburnia/burn-libisofs.c
	(brasero_libisofs_export_caps):

Modified:
   trunk/ChangeLog
   trunk/src/brasero-burn-dialog.c
   trunk/src/brasero-disc-option-dialog.c
   trunk/src/brasero-drive-properties.c
   trunk/src/brasero-progress.c
   trunk/src/brasero-progress.h
   trunk/src/brasero-tool-dialog.c
   trunk/src/burn-caps.c
   trunk/src/burn-debug.c
   trunk/src/burn-job.c
   trunk/src/burn-media.c
   trunk/src/burn-media.h
   trunk/src/burn-medium.c
   trunk/src/burn-medium.h
   trunk/src/burn-plugin.h
   trunk/src/burn.c
   trunk/src/plugins/cdrkit/burn-genisoimage.c
   trunk/src/plugins/cdrkit/burn-readom.c
   trunk/src/plugins/cdrtools/burn-mkisofs.c
   trunk/src/plugins/cdrtools/burn-readcd.c
   trunk/src/plugins/checksum/burn-checksum-files.c
   trunk/src/plugins/dvdauthor/burn-dvdauthor.c
   trunk/src/plugins/dvdcss/burn-dvdcss.c
   trunk/src/plugins/growisofs/burn-dvd-rw-format.c
   trunk/src/plugins/growisofs/burn-growisofs.c
   trunk/src/plugins/libburnia/burn-libburn.c
   trunk/src/plugins/libburnia/burn-libisofs.c

Modified: trunk/src/brasero-burn-dialog.c
==============================================================================
--- trunk/src/brasero-burn-dialog.c	(original)
+++ trunk/src/brasero-burn-dialog.c	Sun Oct 12 18:55:20 2008
@@ -168,7 +168,7 @@
 		header = g_strdup_printf ("<big><b>%s</b></big>", _("Creating image"));
 		title = g_strdup (_("Brasero - Creating Image"));
 	}
-	else if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL)) {
+	else if (media & BRASERO_MEDIUM_DVD) {
 		if (BRASERO_TRACK_TYPE_HAS_VIDEO (input)) {
 			if (flags & BRASERO_BURN_FLAG_DUMMY) {
 				title = g_strdup (_("Brasero - Burning DVD (Simulation)"));
@@ -412,7 +412,7 @@
 				     NULL,
 				     NULL);
 
-		if ((type & BRASERO_MEDIUM_CD) && !(type & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))) {
+		if ((type & BRASERO_MEDIUM_CD) && !(type & BRASERO_MEDIUM_DVD)) {
 			if (!insert) {
 				if (isosize)
 					message = g_strdup_printf (_("Please, replace the disc with a recordable CD with at least %i MiB of free space."), 
@@ -428,7 +428,7 @@
 					message = g_strdup (_("Please, insert a recordable CD."));
 			}
 		}
-		else if (!(type & BRASERO_MEDIUM_CD) && (type & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))) {
+		else if (!(type & BRASERO_MEDIUM_CD) && (type & BRASERO_MEDIUM_DVD)) {
 			if (!insert) {
 				if (isosize)
 					message = g_strdup_printf (_("Please, replace the disc with a recordable DVD with at least %i MiB of free space."), 
@@ -904,7 +904,7 @@
 								   (guint) (task_progress * 100.0));
 
 	brasero_burn_progress_set_status (BRASERO_BURN_PROGRESS (dialog->priv->progress),
-					  (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL)),
+					  media,
 					  overall_progress,
 					  task_progress,
 					  remaining,
@@ -1647,13 +1647,13 @@
 		break;
 	case BRASERO_TRACK_TYPE_DISC:
 		if (!brasero_drive_is_fake (drive)) {
-			if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+			if (media & BRASERO_MEDIUM_DVD)
 				primary = g_strdup (_("DVD successfully copied"));
 			else
 				primary = g_strdup (_("CD successfully copied"));
 		}
 		else {
-			if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+			if (media & BRASERO_MEDIUM_DVD)
 				primary = g_strdup (_("Image of DVD successfully created"));
 			else
 				primary = g_strdup (_("Image of CD successfully created"));
@@ -1661,7 +1661,7 @@
 		break;
 	case BRASERO_TRACK_TYPE_IMAGE:
 		if (!brasero_drive_is_fake (drive)) {
-			if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+			if (media & BRASERO_MEDIUM_DVD)
 				primary = g_strdup (_("Image successfully burnt to DVD"));
 			else
 				primary = g_strdup (_("Image successfully burnt to CD"));
@@ -1669,7 +1669,7 @@
 		break;
 	default:
 		if (!brasero_drive_is_fake (drive)) {
-			if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+			if (media & BRASERO_MEDIUM_DVD)
 				primary = g_strdup (_("Data DVD successfully burnt"));
 			else
 				primary = g_strdup (_("Data CD successfully burnt"));
@@ -1697,7 +1697,7 @@
 	brasero_burn_progress_display_session_info (BRASERO_BURN_PROGRESS (dialog->priv->progress),
 						    g_timer_elapsed (dialog->priv->total_time, NULL),
 						    rate,
-						    (media & BRASERO_MEDIUM_DVD),
+						    media,
 						    dialog->priv->total_size);
 
 

Modified: trunk/src/brasero-disc-option-dialog.c
==============================================================================
--- trunk/src/brasero-disc-option-dialog.c	(original)
+++ trunk/src/brasero-disc-option-dialog.c	Sun Oct 12 18:55:20 2008
@@ -201,7 +201,7 @@
 	/* MULTI and Video projects don't get along */
 	if (input.type == BRASERO_TRACK_TYPE_DATA
 	&& (input.subtype.fs_type & BRASERO_IMAGE_FS_VIDEO)
-	&& (brasero_burn_session_get_dest_media (session) & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))) {
+	&& (brasero_burn_session_get_dest_media (session) & BRASERO_MEDIUM_DVD)) {
 		brasero_session_cfg_remove_flags (BRASERO_SESSION_CFG (session), BRASERO_BURN_FLAG_MULTI);
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->multi_toggle), FALSE);
 		gtk_widget_set_sensitive (priv->multi_toggle, FALSE);

Modified: trunk/src/brasero-drive-properties.c
==============================================================================
--- trunk/src/brasero-drive-properties.c	(original)
+++ trunk/src/brasero-drive-properties.c	Sun Oct 12 18:55:20 2008
@@ -351,12 +351,15 @@
 {
 	gchar *text;
 
-	if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+	if (media & BRASERO_MEDIUM_DVD)
 		text = g_strdup_printf (_("%.1f x (DVD)"),
 					BRASERO_RATE_TO_SPEED_DVD (rate));
 	else if (media & BRASERO_MEDIUM_CD)
 		text = g_strdup_printf (_("%.1f x (CD)"),
 					BRASERO_RATE_TO_SPEED_CD (rate));
+	else if (media & BRASERO_MEDIUM_BD)
+		text = g_strdup_printf (_("%.1f x (DVD)"), /* FIXME */
+					BRASERO_RATE_TO_SPEED_BD (rate));
 	else
 		text = g_strdup_printf (_("%.1f x (DVD) %.1f x (CD)"),
 					BRASERO_RATE_TO_SPEED_DVD (rate),

Modified: trunk/src/brasero-progress.c
==============================================================================
--- trunk/src/brasero-progress.c	(original)
+++ trunk/src/brasero-progress.c	Sun Oct 12 18:55:20 2008
@@ -193,7 +193,7 @@
 brasero_burn_progress_display_session_info (BraseroBurnProgress *obj,
 					    glong time,
 					    gint64 rate,
-					    gboolean is_DVD,
+					    BraseroMedia media,
 					    gint written)
 {
 	GtkWidget *label;
@@ -253,8 +253,10 @@
 				  0,
 				  0);
 
-		if (is_DVD)
+		if (media & BRASERO_MEDIUM_DVD)
 			speed = (gfloat) BRASERO_RATE_TO_SPEED_DVD (rate);
+		else if (media & BRASERO_MEDIUM_BD)
+			speed = (gfloat) BRASERO_RATE_TO_SPEED_BD (rate);
 		else
 			speed = (gfloat) BRASERO_RATE_TO_SPEED_CD (rate);
 
@@ -428,7 +430,7 @@
 
 void
 brasero_burn_progress_set_status (BraseroBurnProgress *self,
-				  gboolean is_DVD,
+				  BraseroMedia media,
 				  gdouble overall_progress,
 				  gdouble action_progress,
 				  glong remaining,
@@ -491,8 +493,10 @@
 	if (rate > 0 && self->priv->speed) {
 		gfloat speed;
 
-		if (rate >= 0 && is_DVD)
+		if (media & BRASERO_MEDIUM_DVD)
 			speed = (gfloat) BRASERO_RATE_TO_SPEED_DVD (rate);
+		else if (media & BRASERO_MEDIUM_BD)
+			speed = (gfloat) BRASERO_RATE_TO_SPEED_BD (rate);
 		else
 			speed = (gfloat) BRASERO_RATE_TO_SPEED_CD (rate);
 

Modified: trunk/src/brasero-progress.h
==============================================================================
--- trunk/src/brasero-progress.h	(original)
+++ trunk/src/brasero-progress.h	Sun Oct 12 18:55:20 2008
@@ -34,6 +34,7 @@
 #include <gtk/gtkvbox.h>
 
 #include "burn-basics.h"
+#include "burn-media.h"
 
 G_BEGIN_DECLS
 
@@ -64,7 +65,7 @@
 
 void
 brasero_burn_progress_set_status (BraseroBurnProgress *progress,
-				  gboolean is_DVD,
+				  BraseroMedia media,
 				  gdouble overall_progress,
 				  gdouble action_progress,
 				  glong remaining,
@@ -75,7 +76,7 @@
 brasero_burn_progress_display_session_info (BraseroBurnProgress *progress,
 					    glong time,
 					    gint64 rate,
-					    gboolean is_DVD,
+					    BraseroMedia media,
 					    gint mb_written);
 
 void

Modified: trunk/src/brasero-tool-dialog.c
==============================================================================
--- trunk/src/brasero-tool-dialog.c	(original)
+++ trunk/src/brasero-tool-dialog.c	Sun Oct 12 18:55:20 2008
@@ -133,7 +133,7 @@
 				  gint written_mb)
 {
 	brasero_burn_progress_set_status (BRASERO_BURN_PROGRESS (self->priv->progress),
-					  FALSE,
+					  FALSE, /* no need for the media here since speed is not specified */
 					  overall_progress,
 					  task_progress,
 					  remaining,

Modified: trunk/src/burn-caps.c
==============================================================================
--- trunk/src/burn-caps.c	(original)
+++ trunk/src/burn-caps.c	Sun Oct 12 18:55:20 2008
@@ -2220,8 +2220,7 @@
 	/* filter as we are only interested in these */
 	required_media &= BRASERO_MEDIUM_WRITABLE|
 			  BRASERO_MEDIUM_CD|
-			  BRASERO_MEDIUM_DVD|
-			  BRASERO_MEDIUM_DVD_DL;
+			  BRASERO_MEDIUM_DVD;
 
 	return required_media;
 }
@@ -2269,7 +2268,7 @@
 
 	if (source.type == BRASERO_TRACK_TYPE_DATA
 	|| (source.type == BRASERO_TRACK_TYPE_DISC
-	&&  source.subtype.media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))) {
+	&& (source.subtype.media & BRASERO_MEDIUM_DVD))) {
 		output.subtype.img_format = BRASERO_IMAGE_FORMAT_BIN;
 		result = brasero_burn_caps_is_output_supported (self,
 								session,
@@ -2906,7 +2905,7 @@
 			return ((gint32) BRASERO_MEDIUM_TYPE (caps_a->type.subtype.media) -
 			        (gint32) BRASERO_MEDIUM_TYPE (caps_b->type.subtype.media));
 
-		if ((caps_a->type.subtype.media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+		if ((caps_a->type.subtype.media & BRASERO_MEDIUM_DVD)
 		&&  BRASERO_MEDIUM_SUBTYPE (caps_a->type.subtype.media) !=
 		    BRASERO_MEDIUM_SUBTYPE (caps_b->type.subtype.media))			
 			return ((gint32) BRASERO_MEDIUM_SUBTYPE (caps_a->type.subtype.media) -

Modified: trunk/src/burn-debug.c
==============================================================================
--- trunk/src/burn-debug.c	(original)
+++ trunk/src/burn-debug.c	Sun Oct 12 18:55:20 2008
@@ -176,12 +176,12 @@
 		strcat (buffer, "DVD ");
 
 	if (media & BRASERO_MEDIUM_RAM)
-		strcat (buffer, "RAM");
+		strcat (buffer, "RAM ");
 
 	if (media & BRASERO_MEDIUM_BD)
 		strcat (buffer, "BD ");
 
-	if (media & BRASERO_MEDIUM_DVD_DL)
+	if (media & BRASERO_MEDIUM_DUAL_L)
 		strcat (buffer, "DL ");
 
 	/* DVD subtypes */
@@ -197,6 +197,16 @@
 	if (media & BRASERO_MEDIUM_JUMP)
 		strcat (buffer, "- (jump) ");
 
+	/* BD subtypes */
+	if (media & BRASERO_MEDIUM_SRM)
+		strcat (buffer, "SRM ");
+
+	if (media & BRASERO_MEDIUM_POW)
+		strcat (buffer, "POW ");
+
+	if (media & BRASERO_MEDIUM_RANDOM)
+		strcat (buffer, "RANDOM ");
+
 	/* discs attributes */
 	if (media & BRASERO_MEDIUM_REWRITABLE)
 		strcat (buffer, "RW ");

Modified: trunk/src/burn-job.c
==============================================================================
--- trunk/src/burn-job.c	(original)
+++ trunk/src/burn-job.c	Sun Oct 12 18:55:20 2008
@@ -1568,9 +1568,11 @@
 	rate = brasero_burn_session_get_rate (session);
 
 	media = brasero_burn_session_get_dest_media (session);
-	if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+	if (media & BRASERO_MEDIUM_DVD)
 		*speed = BRASERO_RATE_TO_SPEED_DVD (rate);
-	else 
+	else if (media & BRASERO_MEDIUM_BD)
+		*speed = BRASERO_RATE_TO_SPEED_BD (rate);
+	else
 		*speed = BRASERO_RATE_TO_SPEED_CD (rate);
 
 	return BRASERO_BURN_OK;
@@ -1620,9 +1622,11 @@
 	medium = brasero_drive_get_medium (drive);
 	rate = brasero_medium_get_max_write_speed (medium);
 	media = brasero_medium_get_status (medium);
-	if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+	if (media & BRASERO_MEDIUM_DVD)
 		*speed = BRASERO_RATE_TO_SPEED_DVD (rate);
-	else 
+	else if (media & BRASERO_MEDIUM_BD)
+		*speed = BRASERO_RATE_TO_SPEED_BD (rate);
+	else
 		*speed = BRASERO_RATE_TO_SPEED_CD (rate);
 
 	return BRASERO_BURN_OK;

Modified: trunk/src/burn-media.c
==============================================================================
--- trunk/src/burn-media.c	(original)
+++ trunk/src/burn-media.c	Sun Oct 12 18:55:20 2008
@@ -32,6 +32,12 @@
 
 #include "burn-media.h"
 
+#define BRASERO_MEDIUM_TRUE_RANDOM_WRITABLE(media)				\
+	(BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_RESTRICTED) ||		\
+	 BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_PLUS) ||		\
+	 BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVD_RAM) || 			\
+	 BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_BDRE))
+
 static GSList *
 brasero_media_add_to_list (GSList *retval,
 			   BraseroMedia media)
@@ -47,33 +53,26 @@
 {
 	if ((type & BRASERO_MEDIUM_BLANK)
 	&& !(media & BRASERO_MEDIUM_ROM)) {
-		/* If media is blank there is no other possible property.
-		 * BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_RESTRICTED)
-		 * condition is checked but in fact it's never valid since
-		 * such a medium cannot exist if it hasn't been formatted before
-		 * which is in contradiction with the fact is unformatted. */
-		if (BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_PLUS)
-		||  BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_RESTRICTED)
-		||  BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW)
-		||  BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_PLUS_DL)) {
-			/* This is only for above types */
-			retval = brasero_media_add_to_list (retval,
-							    media|
-							    BRASERO_MEDIUM_BLANK);
+		/* If media is blank there is no other possible property. */
+		retval = brasero_media_add_to_list (retval,
+						    media|
+						    BRASERO_MEDIUM_BLANK);
+
+		/* NOTE about BR-R they can be "formatted" but they are never
+		 * unformatted since by default they'll be used as sequential */
+		if (!(media & BRASERO_MEDIUM_RAM)
+		&&   (BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_REWRITABLE)
+		||    BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_BD|BRASERO_MEDIUM_REWRITABLE))) {
 			if (type & BRASERO_MEDIUM_UNFORMATTED)
 				retval = brasero_media_add_to_list (retval,
 								    media|
 								    BRASERO_MEDIUM_BLANK|
 								    BRASERO_MEDIUM_UNFORMATTED);
 		}
-		else
-			retval = brasero_media_add_to_list (retval,
-							    media|
-							    BRASERO_MEDIUM_BLANK);
 	}
 
 	if (type & BRASERO_MEDIUM_CLOSED) {
-		if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+		if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_BD))
 			retval = brasero_media_add_to_list (retval,
 							    media|
 							    BRASERO_MEDIUM_CLOSED|
@@ -101,10 +100,8 @@
 
 	if ((type & BRASERO_MEDIUM_APPENDABLE)
 	&& !(media & BRASERO_MEDIUM_ROM)
-	&& !(media & BRASERO_MEDIUM_RESTRICTED)
-	&& ! BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_PLUS|BRASERO_MEDIUM_REWRITABLE)
-	&& ! BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVD_DL|BRASERO_MEDIUM_PLUS|BRASERO_MEDIUM_REWRITABLE)) {
-		if (media & BRASERO_MEDIUM_DVD)
+	&& !BRASERO_MEDIUM_TRUE_RANDOM_WRITABLE (media)) {
+		if (media & (BRASERO_MEDIUM_BD|BRASERO_MEDIUM_DVD))
 			retval = brasero_media_add_to_list (retval,
 							    media|
 							    BRASERO_MEDIUM_APPENDABLE|
@@ -137,28 +134,18 @@
 			     BraseroMedia media,
 			     BraseroMedia type)
 {
-	if (type & BRASERO_MEDIUM_REWRITABLE) {
-		/* Always true for + media there are both single and dual layer */
-		if (media & BRASERO_MEDIUM_PLUS)
-			retval = brasero_media_new_status (retval,
-							   media|BRASERO_MEDIUM_REWRITABLE,
-							   type);
-		/* There is no dual layer DVD-RW */
-		else if (!(media & BRASERO_MEDIUM_DVD_DL))
-			retval = brasero_media_new_status (retval,
-							   media|BRASERO_MEDIUM_REWRITABLE,
-							   type);
-	}
+	/* NOTE: never reached by BDs, ROMs (any) or Restricted Overwrite
+	 * and DVD- dual layer */
 
-	if ((type & BRASERO_MEDIUM_WRITABLE)
-	&& !(media & BRASERO_MEDIUM_RESTRICTED))
+	/* NOTE: there is no dual layer DVD-RW */
+	if (type & BRASERO_MEDIUM_REWRITABLE)
 		retval = brasero_media_new_status (retval,
-						   media|BRASERO_MEDIUM_WRITABLE,
+						   media|BRASERO_MEDIUM_REWRITABLE,
 						   type);
 
-	if (type & BRASERO_MEDIUM_ROM)
+	if (type & BRASERO_MEDIUM_WRITABLE)
 		retval = brasero_media_new_status (retval,
-						   media|BRASERO_MEDIUM_ROM,
+						   media|BRASERO_MEDIUM_WRITABLE,
 						   type);
 
 	return retval;
@@ -170,61 +157,152 @@
 			   BraseroMedia type)
 {
 	if (media & BRASERO_MEDIUM_BD) {
-		if (type & BRASERO_MEDIUM_RANDOM)
-			retval = brasero_media_new_attribute (retval,
-							      media|BRASERO_MEDIUM_RANDOM,
-							      type);
-		if (type & BRASERO_MEDIUM_SRM)
-			retval = brasero_media_new_attribute (retval,
-							      media|BRASERO_MEDIUM_SRM,
-							      type);
-		if (type & BRASERO_MEDIUM_POW)
-			retval = brasero_media_new_attribute (retval,
-							      media|BRASERO_MEDIUM_POW,
-							      type);
+		/* There seems to be Dual layers BDs as well */
+
+		if (type & BRASERO_MEDIUM_ROM) {
+			retval = brasero_media_new_status (retval,
+							   media|
+							   BRASERO_MEDIUM_ROM,
+							   type);
+			if (type & BRASERO_MEDIUM_DUAL_L)
+				retval = brasero_media_new_status (retval,
+								   media|
+								   BRASERO_MEDIUM_ROM|
+								   BRASERO_MEDIUM_DUAL_L,
+								   type);
+		}
+
+		if (type & BRASERO_MEDIUM_RANDOM) {
+			retval = brasero_media_new_status (retval,
+							   media|
+							   BRASERO_MEDIUM_RANDOM|
+							   BRASERO_MEDIUM_WRITABLE,
+							   type);
+			if (type & BRASERO_MEDIUM_DUAL_L)
+				retval = brasero_media_new_status (retval,
+								   media|
+								   BRASERO_MEDIUM_RANDOM|
+								   BRASERO_MEDIUM_WRITABLE|
+								   BRASERO_MEDIUM_DUAL_L,
+								   type);
+		}
+
+		if (type & BRASERO_MEDIUM_SRM) {
+			retval = brasero_media_new_status (retval,
+							   media|
+							   BRASERO_MEDIUM_SRM|
+							   BRASERO_MEDIUM_WRITABLE,
+							   type);
+			if (type & BRASERO_MEDIUM_DUAL_L)
+				retval = brasero_media_new_status (retval,
+								   media|
+								   BRASERO_MEDIUM_SRM|
+								   BRASERO_MEDIUM_WRITABLE|
+								   BRASERO_MEDIUM_DUAL_L,
+								   type);
+		}
+
+		if (type & BRASERO_MEDIUM_POW) {
+			retval = brasero_media_new_status (retval,
+							   media|
+							   BRASERO_MEDIUM_POW|
+							   BRASERO_MEDIUM_WRITABLE,
+							   type);
+			if (type & BRASERO_MEDIUM_DUAL_L)
+				retval = brasero_media_new_status (retval,
+								   media|
+								   BRASERO_MEDIUM_POW|
+								   BRASERO_MEDIUM_WRITABLE|
+								   BRASERO_MEDIUM_DUAL_L,
+								   type);
+		}
+
+		/* BD-RE */
+		if (type & BRASERO_MEDIUM_REWRITABLE) {
+			retval = brasero_media_new_status (retval,
+							   media|
+							   BRASERO_MEDIUM_REWRITABLE,
+							   type);
+			if (type & BRASERO_MEDIUM_DUAL_L)
+				retval = brasero_media_new_status (retval,
+								   media|
+								   BRASERO_MEDIUM_REWRITABLE|
+								   BRASERO_MEDIUM_DUAL_L,
+								   type);
+		}
 	}
 
 	if (media & BRASERO_MEDIUM_DVD) {
-		if (type & BRASERO_MEDIUM_SEQUENTIAL)
-			retval = brasero_media_new_attribute (retval,
-							      media|BRASERO_MEDIUM_SEQUENTIAL,
-							      type);
+		/* There is no such thing as DVD-RW DL nor DVD-RAM DL*/
 
-		if (type & BRASERO_MEDIUM_RESTRICTED)
-			retval = brasero_media_new_attribute (retval,
-							      media|BRASERO_MEDIUM_RESTRICTED,
-							      type);
+		/* The following is always a DVD-R dual layer */
+		if (type & BRASERO_MEDIUM_JUMP)
+			retval = brasero_media_new_status (retval,
+							   media|
+							   BRASERO_MEDIUM_JUMP|
+							   BRASERO_MEDIUM_DUAL_L|
+							   BRASERO_MEDIUM_WRITABLE,
+							   type);
 
-		if (type & BRASERO_MEDIUM_PLUS)
+		if (type & BRASERO_MEDIUM_SEQUENTIAL) {
 			retval = brasero_media_new_attribute (retval,
-							      media|BRASERO_MEDIUM_PLUS,
+							      media|
+							      BRASERO_MEDIUM_SEQUENTIAL,
 							      type);
-		if (type & BRASERO_MEDIUM_ROM)
+
+			/* This one has to be writable only, no RW */
+			if (type & BRASERO_MEDIUM_DUAL_L)
+				retval = brasero_media_new_status (retval,
+								   media|
+								   BRASERO_MEDIUM_SEQUENTIAL|
+								   BRASERO_MEDIUM_WRITABLE|
+								   BRASERO_MEDIUM_DUAL_L,
+								   type);
+		}
+
+		/* Restricted Overwrite media are always rewritable */
+		if (type & BRASERO_MEDIUM_RESTRICTED)
 			retval = brasero_media_new_status (retval,
-							   media|BRASERO_MEDIUM_ROM,
+							   media|
+							   BRASERO_MEDIUM_RESTRICTED|
+							   BRASERO_MEDIUM_REWRITABLE,
 							   type);
-	}
 
-	if (media & BRASERO_MEDIUM_DVD_DL) {
-		/* There is no such thing as DVD-RW DL */
-		if ((type & BRASERO_MEDIUM_SEQUENTIAL) && !(type & BRASERO_MEDIUM_REWRITABLE))
+		if (type & BRASERO_MEDIUM_PLUS) {
 			retval = brasero_media_new_attribute (retval,
-							      media|BRASERO_MEDIUM_SEQUENTIAL,
+							      media|
+							      BRASERO_MEDIUM_PLUS,
 							      type);
 
-		if ((type & BRASERO_MEDIUM_JUMP) && !(type & BRASERO_MEDIUM_REWRITABLE))
-			retval = brasero_media_new_attribute (retval,
-							      media|BRASERO_MEDIUM_JUMP,
-							      type);
+			if (type & BRASERO_MEDIUM_DUAL_L)
+				retval = brasero_media_new_attribute (retval,
+								      media|
+								      BRASERO_MEDIUM_PLUS|
+								      BRASERO_MEDIUM_DUAL_L,
+								      type);
 
-		if (type & BRASERO_MEDIUM_PLUS)
-			retval = brasero_media_new_attribute (retval,
-							      media|BRASERO_MEDIUM_PLUS,
-							      type);
+		}
 
-		if (type & BRASERO_MEDIUM_ROM)
+		if (type & BRASERO_MEDIUM_ROM) {
 			retval = brasero_media_new_status (retval,
-							   media|BRASERO_MEDIUM_ROM,
+							   media|
+							   BRASERO_MEDIUM_ROM,
+							   type);
+
+			if (type & BRASERO_MEDIUM_DUAL_L)
+				retval = brasero_media_new_status (retval,
+								   media|
+								   BRASERO_MEDIUM_ROM|
+								   BRASERO_MEDIUM_DUAL_L,
+								   type);
+		}
+
+		/* RAM media are always rewritable */
+		if (type & BRASERO_MEDIUM_RAM)
+			retval = brasero_media_new_status (retval,
+							   media|
+							   BRASERO_MEDIUM_RAM|
+							   BRASERO_MEDIUM_REWRITABLE,
 							   type);
 	}
 
@@ -239,27 +317,23 @@
 	if (type & BRASERO_MEDIUM_FILE)
 		retval = brasero_media_add_to_list (retval, BRASERO_MEDIUM_FILE);					       
 
-	if (type & BRASERO_MEDIUM_CD)
+	if (type & BRASERO_MEDIUM_CD) {
+		if (type & BRASERO_MEDIUM_ROM)
+			retval = brasero_media_new_status (retval,
+							   BRASERO_MEDIUM_CD|
+							   BRASERO_MEDIUM_ROM,
+							   type);
+
 		retval = brasero_media_new_attribute (retval,
 						      BRASERO_MEDIUM_CD,
 						      type);
+	}
 
 	if (type & BRASERO_MEDIUM_DVD)
 		retval = brasero_media_new_subtype (retval,
 						    BRASERO_MEDIUM_DVD,
 						    type);
 
-	if (type & BRASERO_MEDIUM_DVD_DL)
-		retval = brasero_media_new_subtype (retval,
-						    BRASERO_MEDIUM_DVD_DL,
-						    type);
-
-	/* RAM media are always rewritable */
-	if (type & BRASERO_MEDIUM_RAM)
-		retval = brasero_media_new_status (retval,
-						   BRASERO_MEDIUM_RAM|
-						   BRASERO_MEDIUM_REWRITABLE,
-						   type);
 
 	if (type & BRASERO_MEDIUM_BD)
 		retval = brasero_media_new_subtype (retval,

Modified: trunk/src/burn-media.h
==============================================================================
--- trunk/src/burn-media.h	(original)
+++ trunk/src/burn-media.h	Sun Oct 12 18:55:20 2008
@@ -41,18 +41,18 @@
 
 	BRASERO_MEDIUM_DVD			= 1 << 2,
 
-	BRASERO_MEDIUM_DVD_DL			= 1 << 3,
+	BRASERO_MEDIUM_BD			= 1 << 3,
 
-	BRASERO_MEDIUM_RAM			= 1 << 4,
-
-	BRASERO_MEDIUM_BD			= 1 << 5,
+	/* subtype for DVD and BD types */
+	BRASERO_MEDIUM_DUAL_L			= 1 << 4,
 
 	/* DVD and DVD DL subtypes */
+	BRASERO_MEDIUM_RAM			= 1 << 5,
 	BRASERO_MEDIUM_PLUS			= 1 << 6,
 	BRASERO_MEDIUM_SEQUENTIAL		= 1 << 7,
-	BRASERO_MEDIUM_RESTRICTED		= 1 << 8,	/* DVD only */
+	BRASERO_MEDIUM_RESTRICTED		= 1 << 8,	/* DVD-RW only */
 
-	/* DVD dual layer only subtype */
+	/* DVD-R dual layer only subtype */
 	BRASERO_MEDIUM_JUMP			= 1 << 9,
 
 	/* BD subtypes */
@@ -95,10 +95,12 @@
 #define BRASERO_MEDIUM_DVDRW_RESTRICTED	(BRASERO_MEDIUM_DVD|		\
 					 BRASERO_MEDIUM_REWRITABLE|	\
 					 BRASERO_MEDIUM_RESTRICTED)
-#define BRASERO_MEDIUM_DVDR_DL		(BRASERO_MEDIUM_DVD_DL|		\
+#define BRASERO_MEDIUM_DVDR_DL		(BRASERO_MEDIUM_DVD|		\
+					 BRASERO_MEDIUM_DUAL_L|		\
 					 BRASERO_MEDIUM_WRITABLE|	\
 					 BRASERO_MEDIUM_SEQUENTIAL)
-#define BRASERO_MEDIUM_DVDR_JUMP_DL	(BRASERO_MEDIUM_DVD_DL|		\
+#define BRASERO_MEDIUM_DVDR_JUMP_DL	(BRASERO_MEDIUM_DVD|		\
+					 BRASERO_MEDIUM_DUAL_L|		\
 					 BRASERO_MEDIUM_WRITABLE|	\
 					 BRASERO_MEDIUM_JUMP)
 #define BRASERO_MEDIUM_DVDR_PLUS	(BRASERO_MEDIUM_DVD|		\
@@ -107,10 +109,12 @@
 #define BRASERO_MEDIUM_DVDRW_PLUS	(BRASERO_MEDIUM_DVD|		\
 					 BRASERO_MEDIUM_REWRITABLE|	\
 					 BRASERO_MEDIUM_PLUS)
-#define BRASERO_MEDIUM_DVDR_PLUS_DL	(BRASERO_MEDIUM_DVD_DL|		\
+#define BRASERO_MEDIUM_DVDR_PLUS_DL	(BRASERO_MEDIUM_DVD|		\
+					 BRASERO_MEDIUM_DUAL_L|		\
 					 BRASERO_MEDIUM_WRITABLE|	\
 					 BRASERO_MEDIUM_PLUS)
-#define BRASERO_MEDIUM_DVDRW_PLUS_DL	(BRASERO_MEDIUM_DVD_DL|		\
+#define BRASERO_MEDIUM_DVDRW_PLUS_DL	(BRASERO_MEDIUM_DVD|		\
+					 BRASERO_MEDIUM_DUAL_L|		\
 					 BRASERO_MEDIUM_REWRITABLE|	\
 					 BRASERO_MEDIUM_PLUS)
 
@@ -133,7 +137,7 @@
 					 BRASERO_MEDIUM_WRITABLE|	\
 					 BRASERO_MEDIUM_RANDOM)
 /* This is always RANDOM write */
-#define BRASERO_MEDIUM_BDRE		(BRASERO_MEDIUM_BD|		\
+#define BRASERO_MEDIUM_BDRE		(BRASERO_MEDIUM_BD|			\
 					 BRASERO_MEDIUM_REWRITABLE)
 
 
@@ -151,6 +155,8 @@
 
 #define BRASERO_MEDIUM_IS(media, type)	(((media)&(type))==(type))
 
+/* These behave like random writable:
+ * they can be appendable or closed, rewritable or writable */
 #define BRASERO_MEDIUM_RANDOM_WRITABLE(media)					\
 	(BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_PLUS) ||		\
 	 BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_RESTRICTED) ||		\

Modified: trunk/src/burn-medium.c
==============================================================================
--- trunk/src/burn-medium.c	(original)
+++ trunk/src/burn-medium.c	Sun Oct 12 18:55:20 2008
@@ -1380,7 +1380,7 @@
 	/* at this point we know the type of the disc that's why we set the 
 	 * size according to this type. That may help to avoid outrange address
 	 * errors. */
-	if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVD_DL|BRASERO_MEDIUM_WRITABLE))
+	if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DUAL_L|BRASERO_MEDIUM_WRITABLE))
 		size = 48;
 	else if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_PLUS|BRASERO_MEDIUM_WRITABLE))
 		size = 40;
@@ -1541,7 +1541,7 @@
 	/* at this point we know the type of the disc that's why we set the 
 	 * size according to this type. That may help to avoid outrange address
 	 * errors. */
-	if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVD_DL|BRASERO_MEDIUM_WRITABLE))
+	if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DUAL_L|BRASERO_MEDIUM_WRITABLE))
 		size = 48;
 	else if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_PLUS|BRASERO_MEDIUM_WRITABLE))
 		size = 40;
@@ -2527,7 +2527,7 @@
 		break;
 
 	case BRASERO_SCSI_PROF_BR_R_SEQUENTIAL:
-		/* need to check if that's a POW as well */
+		/* check if that's a POW later */
 		priv->info = BRASERO_MEDIUM_BDR_SRM;
 		priv->type = types [14];
 		priv->icon = icons [5];
@@ -2598,6 +2598,52 @@
 	if (result != BRASERO_BURN_OK)
 		return result;
 
+	/* for BDs media we need to check the number of layers */
+	if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_BD|BRASERO_MEDIUM_SRM)) {
+		/* check for POW */
+		hdr = NULL;
+		result = brasero_mmc2_get_configuration_feature (handle,
+								 BRASERO_SCSI_FEAT_BDR_POW,
+								 &hdr,
+								 &size,
+								 code);
+		if (result == BRASERO_SCSI_OK) {
+			if (hdr->desc->current) {
+				BRASERO_BURN_LOG ("POW formatted medium detected");
+				priv->info |= BRASERO_MEDIUM_POW;
+			}
+
+			g_free (hdr);			
+		}
+		else {
+			BraseroScsiFormatCapacitiesHdr *hdr = NULL;
+
+			/* NOTE: the disc status as far as format is concerned
+			 * is done later for all rewritable media. */
+			/* check for unformatted media (if it's POW or RANDOM
+			 * there is no need of course) */
+			result = brasero_mmc2_read_format_capacities (handle,
+								      &hdr,
+								      &size,
+								      NULL);
+			if (result == BRASERO_SCSI_OK) {
+				BraseroScsiMaxCapacityDesc *current;
+
+				current = hdr->max_caps;
+				if (!(current->type & BRASERO_SCSI_DESC_FORMATTED)) {
+					BRASERO_BURN_LOG ("Unformatted BD-R");
+					priv->info |= BRASERO_MEDIUM_UNFORMATTED;
+				}
+
+				g_free (hdr);
+			}
+		}		
+	}
+
+	if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_BD)) {
+		/* check for dual layer BD */
+	}
+
 	return BRASERO_BURN_OK;
 }
 

Modified: trunk/src/burn-medium.h
==============================================================================
--- trunk/src/burn-medium.h	(original)
+++ trunk/src/burn-medium.h	Sun Oct 12 18:55:20 2008
@@ -37,6 +37,7 @@
  * Source Wikipedia.com =)
  * Apparently most drives return rates that should be used with Audio factor
  */
+
 #define CD_RATE 176400 /* bytes by second */
 #define DVD_RATE 1387500
 #define BD_RATE 4500000
@@ -47,6 +48,7 @@
 #define BRASERO_SPEED_TO_RATE_DVD(speed)	(guint) ((speed) * DVD_RATE)
 #define BRASERO_RATE_TO_SPEED_CD(rate)		(gdouble) ((gdouble) (rate) / (gdouble) CD_RATE)
 #define BRASERO_RATE_TO_SPEED_DVD(rate)		(gdouble) ((gdouble) (rate) / (gdouble) DVD_RATE)
+#define BRASERO_RATE_TO_SPEED_BD(rate)		(gdouble) ((gdouble) (rate) / (gdouble) BD_RATE)
 
 #define BRASERO_TYPE_MEDIUM             (brasero_medium_get_type ())
 #define BRASERO_MEDIUM(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), BRASERO_TYPE_MEDIUM, BraseroMedium))

Modified: trunk/src/burn-plugin.h
==============================================================================
--- trunk/src/burn-plugin.h	(original)
+++ trunk/src/burn-plugin.h	Sun Oct 12 18:55:20 2008
@@ -322,7 +322,7 @@
 	/* DAO and MULTI are exclusive */					\
 	brasero_plugin_set_flags (plugin_MACRO,					\
 				  BRASERO_MEDIUM_DVDR|				\
-				  BRASERO_MEDIUM_DVD_DL|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
 				  BRASERO_MEDIUM_JUMP|				\
 				  BRASERO_MEDIUM_BLANK,				\
 				  BRASERO_BURN_FLAG_DAO|			\
@@ -333,7 +333,7 @@
 				  BRASERO_BURN_FLAG_NONE);			\
 	brasero_plugin_set_flags (plugin_MACRO,					\
 				  BRASERO_MEDIUM_DVDR|				\
-				  BRASERO_MEDIUM_DVD_DL|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
 				  BRASERO_MEDIUM_JUMP|				\
 				  BRASERO_MEDIUM_BLANK,				\
 				  BRASERO_BURN_FLAG_BURNPROOF|			\
@@ -345,7 +345,7 @@
 	/* This is a DVDR with data data can be merged or at least appended */	\
 	brasero_plugin_set_flags (plugin_MACRO,					\
 				  BRASERO_MEDIUM_DVDR|				\
-				  BRASERO_MEDIUM_DVD_DL|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
 				  BRASERO_MEDIUM_JUMP|				\
 				  BRASERO_MEDIUM_APPENDABLE|			\
 				  BRASERO_MEDIUM_HAS_DATA,			\
@@ -362,7 +362,7 @@
 	/* DVD+R don't have a DUMMY mode */					\
 	brasero_plugin_set_flags (plugin_MACRO,					\
 				  BRASERO_MEDIUM_DVDR_PLUS|			\
-				  BRASERO_MEDIUM_DVD_DL|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
 				  BRASERO_MEDIUM_BLANK,				\
 				  BRASERO_BURN_FLAG_DAO|			\
 				  BRASERO_BURN_FLAG_BURNPROOF|			\
@@ -371,7 +371,7 @@
 				  BRASERO_BURN_FLAG_NONE);			\
 	brasero_plugin_set_flags (plugin_MACRO,					\
 				  BRASERO_MEDIUM_DVDR_PLUS|			\
-				  BRASERO_MEDIUM_DVD_DL|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
 				  BRASERO_MEDIUM_BLANK,				\
 				  BRASERO_BURN_FLAG_BURNPROOF|			\
 				  BRASERO_BURN_FLAG_OVERBURN|			\
@@ -381,7 +381,7 @@
 	/* DVD+R with data: data can be merged or at least appended */		\
 	brasero_plugin_set_flags (plugin_MACRO,					\
 				  BRASERO_MEDIUM_DVDR_PLUS|			\
-				  BRASERO_MEDIUM_DVD_DL|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
 				  BRASERO_MEDIUM_APPENDABLE|			\
 				  BRASERO_MEDIUM_HAS_DATA,			\
 				  BRASERO_BURN_FLAG_MERGE|			\
@@ -440,7 +440,7 @@
 #define BRASERO_PLUGIN_ADD_STANDARD_DVDRW_PLUS_FLAGS(plugin_MACRO)		\
 	brasero_plugin_set_flags (plugin_MACRO,					\
 				  BRASERO_MEDIUM_DVDRW_PLUS|			\
-				  BRASERO_MEDIUM_DVD_DL|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
 				  BRASERO_MEDIUM_UNFORMATTED|			\
 				  BRASERO_MEDIUM_BLANK,				\
 				  BRASERO_BURN_FLAG_MULTI|			\
@@ -449,7 +449,7 @@
 				  BRASERO_BURN_FLAG_MULTI);			\
 	brasero_plugin_set_flags (plugin_MACRO,					\
 				  BRASERO_MEDIUM_DVDRW_PLUS|			\
-				  BRASERO_MEDIUM_DVD_DL|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
 				  BRASERO_MEDIUM_APPENDABLE|			\
 				  BRASERO_MEDIUM_CLOSED|			\
 				  BRASERO_MEDIUM_HAS_DATA,			\
@@ -487,6 +487,75 @@
 				  BRASERO_BURN_FLAG_MERGE,			\
 				  BRASERO_BURN_FLAG_MULTI);
 
+#define BRASERO_PLUGIN_ADD_STANDARD_BD_R_FLAGS(plugin_MACRO)			\
+	/* DAO and MULTI are exclusive */					\
+	brasero_plugin_set_flags (plugin_MACRO,					\
+				  BRASERO_MEDIUM_BDR_RANDOM|			\
+				  BRASERO_MEDIUM_BDR_SRM|			\
+				  BRASERO_MEDIUM_BDR_SRM_POW|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
+				  BRASERO_MEDIUM_BLANK,				\
+				  BRASERO_BURN_FLAG_DAO|			\
+				  BRASERO_BURN_FLAG_OVERBURN|			\
+				  BRASERO_BURN_FLAG_DUMMY|			\
+				  BRASERO_BURN_FLAG_NOGRACE,			\
+				  BRASERO_BURN_FLAG_NONE);			\
+	brasero_plugin_set_flags (plugin_MACRO,					\
+				  BRASERO_MEDIUM_BDR_RANDOM|			\
+				  BRASERO_MEDIUM_BDR_SRM|			\
+				  BRASERO_MEDIUM_BDR_SRM_POW|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
+				  BRASERO_MEDIUM_BLANK,				\
+				  BRASERO_BURN_FLAG_OVERBURN|			\
+				  BRASERO_BURN_FLAG_MULTI|			\
+				  BRASERO_BURN_FLAG_DUMMY|			\
+				  BRASERO_BURN_FLAG_NOGRACE,			\
+				  BRASERO_BURN_FLAG_NONE);			\
+	/* This is a DVDR with data data can be merged or at least appended */	\
+	brasero_plugin_set_flags (plugin_MACRO,					\
+				  BRASERO_MEDIUM_BDR_RANDOM|			\
+				  BRASERO_MEDIUM_BDR_SRM|			\
+				  BRASERO_MEDIUM_BDR_SRM_POW|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
+				  BRASERO_MEDIUM_APPENDABLE|			\
+				  BRASERO_MEDIUM_HAS_DATA,			\
+				  BRASERO_BURN_FLAG_APPEND|			\
+				  BRASERO_BURN_FLAG_MERGE|			\
+				  BRASERO_BURN_FLAG_OVERBURN|			\
+				  BRASERO_BURN_FLAG_MULTI|			\
+				  BRASERO_BURN_FLAG_DUMMY|			\
+				  BRASERO_BURN_FLAG_NOGRACE,			\
+				  BRASERO_BURN_FLAG_APPEND);
+
+/**
+ * These kind of media don't support:
+ * - BURNPROOF
+ * - DAO
+ * - APPEND
+ * since they don't behave and are not written in the same way.
+ * They also can't be closed so MULTI is compulsory.
+ */
+#define BRASERO_PLUGIN_ADD_STANDARD_BD_RE_FLAGS(plugin_MACRO)			\
+	brasero_plugin_set_flags (plugin_MACRO,					\
+				  BRASERO_MEDIUM_DVDRW_PLUS|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
+				  BRASERO_MEDIUM_UNFORMATTED|			\
+				  BRASERO_MEDIUM_BLANK,				\
+				  BRASERO_BURN_FLAG_MULTI|			\
+				  BRASERO_BURN_FLAG_OVERBURN|			\
+				  BRASERO_BURN_FLAG_NOGRACE,			\
+				  BRASERO_BURN_FLAG_MULTI);			\
+	brasero_plugin_set_flags (plugin_MACRO,					\
+				  BRASERO_MEDIUM_DVDRW_PLUS|			\
+				  BRASERO_MEDIUM_DUAL_L|			\
+				  BRASERO_MEDIUM_APPENDABLE|			\
+				  BRASERO_MEDIUM_CLOSED|			\
+				  BRASERO_MEDIUM_HAS_DATA,			\
+				  BRASERO_BURN_FLAG_MULTI|			\
+				  BRASERO_BURN_FLAG_OVERBURN|			\
+				  BRASERO_BURN_FLAG_NOGRACE|			\
+				  BRASERO_BURN_FLAG_MERGE,			\
+				  BRASERO_BURN_FLAG_MULTI);
 G_END_DECLS
 
 #endif /* _BURN_PLUGIN_H_ */

Modified: trunk/src/burn.c
==============================================================================
--- trunk/src/burn.c	(original)
+++ trunk/src/burn.c	Sun Oct 12 18:55:20 2008
@@ -747,7 +747,7 @@
 
 		return BRASERO_BURN_ERROR_MEDIA_NOT_WRITABLE;
 	}
-	else if (unsupported & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+	else if (unsupported & BRASERO_MEDIUM_DVD)
 		return BRASERO_BURN_ERROR_DVD_NOT_SUPPORTED;
 
 	return BRASERO_BURN_ERROR_MEDIA_UNSUPPORTED;
@@ -949,8 +949,7 @@
 	required_media = brasero_burn_caps_get_required_media_type (priv->caps, priv->session);
 	required_media &= (BRASERO_MEDIUM_WRITABLE|
 			   BRASERO_MEDIUM_CD|
-			   BRASERO_MEDIUM_DVD|
-			   BRASERO_MEDIUM_DVD_DL);
+			   BRASERO_MEDIUM_DVD);
 
 	if (required_media == BRASERO_MEDIUM_NONE)
 		required_media = BRASERO_MEDIUM_WRITABLE;
@@ -2351,8 +2350,7 @@
 								    priv->session);
 	required_media &= (BRASERO_MEDIUM_WRITABLE|
 			   BRASERO_MEDIUM_CD|
-			   BRASERO_MEDIUM_DVD|
-			   BRASERO_MEDIUM_DVD_DL);
+			   BRASERO_MEDIUM_DVD);
 
 	/* There is sometimes no way to determine which type of media is
 	 * required since some flags (that will be adjusted afterwards)

Modified: trunk/src/plugins/cdrkit/burn-genisoimage.c
==============================================================================
--- trunk/src/plugins/cdrkit/burn-genisoimage.c	(original)
+++ trunk/src/plugins/cdrkit/burn-genisoimage.c	Sun Oct 12 18:55:20 2008
@@ -523,7 +523,7 @@
 				  BRASERO_MEDIUM_CDRW|
 				  BRASERO_MEDIUM_DVDR|
 				  BRASERO_MEDIUM_DVDRW|
-				  BRASERO_MEDIUM_DVD_DL|
+				  BRASERO_MEDIUM_DUAL_L|
 				  BRASERO_MEDIUM_DVDR_PLUS|
 				  BRASERO_MEDIUM_APPENDABLE|
 				  BRASERO_MEDIUM_HAS_AUDIO|
@@ -533,7 +533,7 @@
 				  BRASERO_BURN_FLAG_NONE);
 
 	brasero_plugin_set_flags (plugin,
-				  BRASERO_MEDIUM_DVD_DL|
+				  BRASERO_MEDIUM_DUAL_L|
 				  BRASERO_MEDIUM_DVDRW_PLUS|
 				  BRASERO_MEDIUM_RESTRICTED|
 				  BRASERO_MEDIUM_APPENDABLE|

Modified: trunk/src/plugins/cdrkit/burn-readom.c
==============================================================================
--- trunk/src/plugins/cdrkit/burn-readom.c	(original)
+++ trunk/src/plugins/cdrkit/burn-readom.c	Sun Oct 12 18:55:20 2008
@@ -435,7 +435,7 @@
 
 	input = brasero_caps_disc_new (BRASERO_MEDIUM_CD|
 				       BRASERO_MEDIUM_DVD|
-				       BRASERO_MEDIUM_DVD_DL|
+				       BRASERO_MEDIUM_DUAL_L|
 				       BRASERO_MEDIUM_PLUS|
 				       BRASERO_MEDIUM_SEQUENTIAL|
 				       BRASERO_MEDIUM_RESTRICTED|

Modified: trunk/src/plugins/cdrtools/burn-mkisofs.c
==============================================================================
--- trunk/src/plugins/cdrtools/burn-mkisofs.c	(original)
+++ trunk/src/plugins/cdrtools/burn-mkisofs.c	Sun Oct 12 18:55:20 2008
@@ -524,7 +524,7 @@
 				  BRASERO_MEDIUM_DVDR|
 				  BRASERO_MEDIUM_DVDRW|
 				  BRASERO_MEDIUM_DVDR_PLUS|
-				  BRASERO_MEDIUM_DVD_DL|
+				  BRASERO_MEDIUM_DUAL_L|
 				  BRASERO_MEDIUM_APPENDABLE|
 				  BRASERO_MEDIUM_HAS_AUDIO|
 				  BRASERO_MEDIUM_HAS_DATA,
@@ -533,7 +533,7 @@
 				  BRASERO_BURN_FLAG_NONE);
 
 	brasero_plugin_set_flags (plugin,
-				  BRASERO_MEDIUM_DVD_DL|
+				  BRASERO_MEDIUM_DUAL_L|
 				  BRASERO_MEDIUM_DVDRW_PLUS|
 				  BRASERO_MEDIUM_RESTRICTED|
 				  BRASERO_MEDIUM_APPENDABLE|

Modified: trunk/src/plugins/cdrtools/burn-readcd.c
==============================================================================
--- trunk/src/plugins/cdrtools/burn-readcd.c	(original)
+++ trunk/src/plugins/cdrtools/burn-readcd.c	Sun Oct 12 18:55:20 2008
@@ -445,7 +445,7 @@
 
 	input = brasero_caps_disc_new (BRASERO_MEDIUM_CD|
 				       BRASERO_MEDIUM_DVD|
-				       BRASERO_MEDIUM_DVD_DL|
+				       BRASERO_MEDIUM_DUAL_L|
 				       BRASERO_MEDIUM_PLUS|
 				       BRASERO_MEDIUM_SEQUENTIAL|
 				       BRASERO_MEDIUM_RESTRICTED|

Modified: trunk/src/plugins/checksum/burn-checksum-files.c
==============================================================================
--- trunk/src/plugins/checksum/burn-checksum-files.c	(original)
+++ trunk/src/plugins/checksum/burn-checksum-files.c	Sun Oct 12 18:55:20 2008
@@ -1243,7 +1243,7 @@
 	 * equivalent instead */
 	input = brasero_caps_disc_new (BRASERO_MEDIUM_CD|
 				       BRASERO_MEDIUM_DVD|
-				       BRASERO_MEDIUM_DVD_DL|
+				       BRASERO_MEDIUM_DUAL_L|
 				       BRASERO_MEDIUM_PLUS|
 				       BRASERO_MEDIUM_RESTRICTED|
 				       BRASERO_MEDIUM_SEQUENTIAL|

Modified: trunk/src/plugins/dvdauthor/burn-dvdauthor.c
==============================================================================
--- trunk/src/plugins/dvdauthor/burn-dvdauthor.c	(original)
+++ trunk/src/plugins/dvdauthor/burn-dvdauthor.c	Sun Oct 12 18:55:20 2008
@@ -386,7 +386,7 @@
   				  BRASERO_MEDIUM_FILE|
 				  BRASERO_MEDIUM_DVDR|
 				  BRASERO_MEDIUM_DVDR_PLUS|
-				  BRASERO_MEDIUM_DVD_DL|
+				  BRASERO_MEDIUM_DUAL_L|
 				  BRASERO_MEDIUM_BLANK|
 				  BRASERO_MEDIUM_APPENDABLE|
 				  BRASERO_MEDIUM_HAS_DATA,
@@ -397,7 +397,7 @@
 				  BRASERO_MEDIUM_DVDRW|
 				  BRASERO_MEDIUM_DVDRW_PLUS|
 				  BRASERO_MEDIUM_DVDRW_RESTRICTED|
-				  BRASERO_MEDIUM_DVD_DL|
+				  BRASERO_MEDIUM_DUAL_L|
 				  BRASERO_MEDIUM_BLANK|
 				  BRASERO_MEDIUM_CLOSED|
 				  BRASERO_MEDIUM_APPENDABLE|

Modified: trunk/src/plugins/dvdcss/burn-dvdcss.c
==============================================================================
--- trunk/src/plugins/dvdcss/burn-dvdcss.c	(original)
+++ trunk/src/plugins/dvdcss/burn-dvdcss.c	Sun Oct 12 18:55:20 2008
@@ -641,7 +641,7 @@
 					 BRASERO_PLUGIN_IO_ACCEPT_PIPE,
 					 BRASERO_IMAGE_FORMAT_BIN);
 	input = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
-				       BRASERO_MEDIUM_DVD_DL|
+				       BRASERO_MEDIUM_DUAL_L|
 				       BRASERO_MEDIUM_ROM|
 				       BRASERO_MEDIUM_CLOSED|
 				       BRASERO_MEDIUM_HAS_DATA|

Modified: trunk/src/plugins/growisofs/burn-dvd-rw-format.c
==============================================================================
--- trunk/src/plugins/growisofs/burn-dvd-rw-format.c	(original)
+++ trunk/src/plugins/growisofs/burn-dvd-rw-format.c	Sun Oct 12 18:55:20 2008
@@ -155,7 +155,7 @@
 {
 	/* NOTE: sequential and restricted are added later on demand */
 	const BraseroMedia media = BRASERO_MEDIUM_DVD|
-				   BRASERO_MEDIUM_DVD_DL|
+				   BRASERO_MEDIUM_DUAL_L|
 				   BRASERO_MEDIUM_REWRITABLE|
 				   BRASERO_MEDIUM_APPENDABLE|
 				   BRASERO_MEDIUM_CLOSED|

Modified: trunk/src/plugins/growisofs/burn-growisofs.c
==============================================================================
--- trunk/src/plugins/growisofs/burn-growisofs.c	(original)
+++ trunk/src/plugins/growisofs/burn-growisofs.c	Sun Oct 12 18:55:20 2008
@@ -729,8 +729,11 @@
 					BRASERO_PLUGIN_IO_ACCEPT_FILE,
 					BRASERO_IMAGE_FORMAT_BIN);
 
-	output = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
-					BRASERO_MEDIUM_DVD_DL|
+	output = brasero_caps_disc_new (BRASERO_MEDIUM_BD|
+					BRASERO_MEDIUM_SRM|
+					BRASERO_MEDIUM_POW|
+					BRASERO_MEDIUM_DVD|
+					BRASERO_MEDIUM_DUAL_L|
 					BRASERO_MEDIUM_PLUS|
 					BRASERO_MEDIUM_JUMP|
 					BRASERO_MEDIUM_SEQUENTIAL|
@@ -750,8 +753,10 @@
 	g_slist_free (output);
 
 	/* and images to DVD RW +/-(restricted) whatever the status */
-	output = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
-					BRASERO_MEDIUM_DVD_DL|
+	output = brasero_caps_disc_new (BRASERO_MEDIUM_BD|
+					BRASERO_MEDIUM_DVD|
+					BRASERO_MEDIUM_RAM|
+					BRASERO_MEDIUM_DUAL_L|
 					BRASERO_MEDIUM_PLUS|
 					BRASERO_MEDIUM_RESTRICTED|
 					BRASERO_MEDIUM_REWRITABLE|
@@ -765,8 +770,19 @@
 	g_slist_free (input);
 
 	/* for DATA type recording discs can be also appendable */
-	output = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
-					BRASERO_MEDIUM_DVD_DL|
+	input = brasero_caps_data_new (BRASERO_IMAGE_FS_ISO|
+				       BRASERO_IMAGE_FS_UDF|
+				       BRASERO_IMAGE_ISO_FS_LEVEL_3|
+				       BRASERO_IMAGE_ISO_FS_DEEP_DIRECTORY|
+				       BRASERO_IMAGE_FS_JOLIET|
+				       BRASERO_IMAGE_FS_VIDEO);
+
+	output = brasero_caps_disc_new (BRASERO_MEDIUM_BD|
+					BRASERO_MEDIUM_SRM|
+					BRASERO_MEDIUM_POW|
+					BRASERO_MEDIUM_DVD|
+					BRASERO_MEDIUM_DUAL_L|
+					BRASERO_MEDIUM_RAM|
 					BRASERO_MEDIUM_PLUS|
 					BRASERO_MEDIUM_RESTRICTED|
 					BRASERO_MEDIUM_SEQUENTIAL|
@@ -777,21 +793,15 @@
 					BRASERO_MEDIUM_BLANK|
 					BRASERO_MEDIUM_APPENDABLE|
 					BRASERO_MEDIUM_HAS_DATA);
-	
-	input = brasero_caps_data_new (BRASERO_IMAGE_FS_ISO|
-				       BRASERO_IMAGE_FS_UDF|
-				       BRASERO_IMAGE_ISO_FS_LEVEL_3|
-				       BRASERO_IMAGE_ISO_FS_DEEP_DIRECTORY|
-				       BRASERO_IMAGE_FS_JOLIET|
-				       BRASERO_IMAGE_FS_VIDEO);
-
 	brasero_plugin_link_caps (plugin, output, input);
 	g_slist_free (output);
 
 	/* growisofs has the possibility to record to closed DVD+RW/-restricted
 	 * and to append some more data to them which makes them unique */
-	output = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
-					BRASERO_MEDIUM_DVD_DL|
+	output = brasero_caps_disc_new (BRASERO_MEDIUM_BD|
+					BRASERO_MEDIUM_DVD|
+					BRASERO_MEDIUM_DUAL_L|
+					BRASERO_MEDIUM_RAM|
 					BRASERO_MEDIUM_PLUS|
 					BRASERO_MEDIUM_RESTRICTED|
 					BRASERO_MEDIUM_REWRITABLE|
@@ -814,9 +824,15 @@
 	/* for DVD+RW */
 	BRASERO_PLUGIN_ADD_STANDARD_DVDRW_PLUS_FLAGS (plugin);
 
+	/* for BD-R */
+	BRASERO_PLUGIN_ADD_STANDARD_BD_R_FLAGS (plugin);
+
+	/* for BD-RE */
+	BRASERO_PLUGIN_ADD_STANDARD_BD_RE_FLAGS (plugin);
+
 	/* blank caps for +/restricted RW */
 	output = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
-					BRASERO_MEDIUM_DVD_DL|
+					BRASERO_MEDIUM_DUAL_L|
 					BRASERO_MEDIUM_PLUS|
 					BRASERO_MEDIUM_RESTRICTED|
 					BRASERO_MEDIUM_REWRITABLE|
@@ -844,7 +860,7 @@
 	/* again DVD+RW don't support dummy */
 	brasero_plugin_set_blank_flags (plugin,
 					BRASERO_MEDIUM_DVDRW_PLUS|
-					BRASERO_MEDIUM_DVD_DL|
+					BRASERO_MEDIUM_DUAL_L|
 					BRASERO_MEDIUM_APPENDABLE|
 					BRASERO_MEDIUM_HAS_DATA|
 					BRASERO_MEDIUM_BLANK|

Modified: trunk/src/plugins/libburnia/burn-libburn.c
==============================================================================
--- trunk/src/plugins/libburnia/burn-libburn.c	(original)
+++ trunk/src/plugins/libburnia/burn-libburn.c	Sun Oct 12 18:55:20 2008
@@ -862,7 +862,7 @@
 					  BRASERO_MEDIUM_HAS_DATA|
 					  BRASERO_MEDIUM_BLANK;
 	const BraseroMedia media_dvd_rw_plus = BRASERO_MEDIUM_DVD|
-					       BRASERO_MEDIUM_DVD_DL|
+					       BRASERO_MEDIUM_DUAL_L|
 					       BRASERO_MEDIUM_PLUS|
 					       BRASERO_MEDIUM_RESTRICTED|
 					       BRASERO_MEDIUM_REWRITABLE|

Modified: trunk/src/plugins/libburnia/burn-libisofs.c
==============================================================================
--- trunk/src/plugins/libburnia/burn-libisofs.c	(original)
+++ trunk/src/plugins/libburnia/burn-libisofs.c	Sun Oct 12 18:55:20 2008
@@ -962,7 +962,7 @@
 				  BRASERO_MEDIUM_CDRW|
 				  BRASERO_MEDIUM_DVDR|
 				  BRASERO_MEDIUM_DVDRW|
-				  BRASERO_MEDIUM_DVD_DL|
+				  BRASERO_MEDIUM_DUAL_L|
 				  BRASERO_MEDIUM_APPENDABLE|
 				  BRASERO_MEDIUM_HAS_AUDIO|
 				  BRASERO_MEDIUM_HAS_DATA,
@@ -973,7 +973,7 @@
 	brasero_plugin_set_flags (plugin,
 				  BRASERO_MEDIUM_DVDRW_PLUS|
 				  BRASERO_MEDIUM_RESTRICTED|
-				  BRASERO_MEDIUM_DVD_DL|
+				  BRASERO_MEDIUM_DUAL_L|
 				  BRASERO_MEDIUM_APPENDABLE|
 				  BRASERO_MEDIUM_CLOSED|
 				  BRASERO_MEDIUM_HAS_DATA,



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