brasero r809 - in trunk: . src src/plugins/cdrkit src/plugins/cdrtools src/plugins/checksum src/plugins/dvdcss src/plugins/growisofs
- From: philippr svn gnome org
- To: svn-commits-list gnome org
- Subject: brasero r809 - in trunk: . src src/plugins/cdrkit src/plugins/cdrtools src/plugins/checksum src/plugins/dvdcss src/plugins/growisofs
- Date: Sat, 10 May 2008 17:03:08 +0100 (BST)
Author: philippr
Date: Sat May 10 16:03:08 2008
New Revision: 809
URL: http://svn.gnome.org/viewvc/brasero?rev=809&view=rev
Log:
Fix #513910 â broken DVD DL support
Added Dual Layer 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-dest-selection.c
(brasero_dest_selection_get_default_output_format):
* 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-project-size.c
(brasero_project_size_get_ruler_min_width),
(brasero_project_size_expose), (brasero_project_size_build_menu),
(brasero_project_size_scroll_event),
(brasero_project_size_find_proper_drive),
(brasero_project_size_set_context):
* src/burn-caps.c (brasero_burn_caps_get_required_media_type),
(brasero_burn_caps_sort), (brasero_caps_disc_lookup_or_create),
(brasero_caps_disc_new_status), (brasero_caps_disc_new_attribute),
(brasero_caps_disc_new_subtype), (brasero_caps_disc_new):
* 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-medium.c (brasero_medium_get_medium_type),
(brasero_medium_track_get_info):
* src/burn-medium.h:
* src/burn.c (brasero_burn_is_loaded_dest_media_supported),
(brasero_burn_reload_dest_media):
* 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/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):
Modified:
trunk/ChangeLog
trunk/src/brasero-burn-dialog.c
trunk/src/brasero-dest-selection.c
trunk/src/brasero-disc-option-dialog.c
trunk/src/brasero-drive-properties.c
trunk/src/brasero-project-size.c
trunk/src/burn-caps.c
trunk/src/burn-debug.c
trunk/src/burn-job.c
trunk/src/burn-medium.c
trunk/src/burn-medium.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/dvdcss/burn-dvdcss.c
trunk/src/plugins/growisofs/burn-dvd-rw-format.c
trunk/src/plugins/growisofs/burn-growisofs.c
Modified: trunk/src/brasero-burn-dialog.c
==============================================================================
--- trunk/src/brasero-burn-dialog.c (original)
+++ trunk/src/brasero-burn-dialog.c Sat May 10 16:03:08 2008
@@ -166,7 +166,7 @@
header = g_strdup_printf ("<big><b>Creating image</b></big>");
title = g_strdup (_("Brasero - Creating image"));
}
- else if (media & BRASERO_MEDIUM_DVD) {
+ else if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL)) {
if (input == BRASERO_TRACK_TYPE_DATA) {
if (flags & BRASERO_BURN_FLAG_DUMMY) {
title = g_strdup (_("Brasero - Burning DVD (simulation)"));
@@ -368,7 +368,7 @@
NULL,
NULL);
- if ((type & BRASERO_MEDIUM_CD) && !(type & BRASERO_MEDIUM_DVD)) {
+ if ((type & BRASERO_MEDIUM_CD) && !(type & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))) {
if (!insert) {
if (isosize)
message = g_strdup_printf (_("replace the disc with a recordable CD with a least %i MiB free."),
@@ -384,7 +384,7 @@
message = g_strdup_printf (_("insert a recordable CD."));
}
}
- else if (!(type & BRASERO_MEDIUM_CD) && (type & BRASERO_MEDIUM_DVD)) {
+ else if (!(type & BRASERO_MEDIUM_CD) && (type & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))) {
if (!insert) {
if (isosize)
message = g_strdup_printf (_("replace the disc with a recordable DVD with a least %i MiB free."),
@@ -896,7 +896,7 @@
(guint) (task_progress * 100.0));
brasero_burn_progress_set_status (BRASERO_BURN_PROGRESS (dialog->priv->progress),
- (media & BRASERO_MEDIUM_DVD),
+ (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL)),
overall_progress,
task_progress,
remaining,
@@ -1639,13 +1639,13 @@
break;
case BRASERO_TRACK_TYPE_DISC:
if (!brasero_drive_is_fake (drive)) {
- if (media & BRASERO_MEDIUM_DVD)
+ if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
primary = g_strdup (_("DVD successfully copied"));
else
primary = g_strdup (_("CD successfully copied"));
}
else {
- if (media & BRASERO_MEDIUM_DVD)
+ if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
primary = g_strdup (_("Image of DVD successfully created"));
else
primary = g_strdup (_("Image of CD successfully created"));
@@ -1653,7 +1653,7 @@
break;
case BRASERO_TRACK_TYPE_IMAGE:
if (!brasero_drive_is_fake (drive)) {
- if (media & BRASERO_MEDIUM_DVD)
+ if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
primary = g_strdup (_("Image successfully burnt to DVD"));
else
primary = g_strdup (_("Image successfully burnt to CD"));
@@ -1661,7 +1661,7 @@
break;
default:
if (!brasero_drive_is_fake (drive)) {
- if (media & BRASERO_MEDIUM_DVD)
+ if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
primary = g_strdup (_("Data DVD successfully burnt"));
else
primary = g_strdup (_("Data CD successfully burnt"));
Modified: trunk/src/brasero-dest-selection.c
==============================================================================
--- trunk/src/brasero-dest-selection.c (original)
+++ trunk/src/brasero-dest-selection.c Sat May 10 16:03:08 2008
@@ -330,7 +330,7 @@
return;
if (source.type == BRASERO_TRACK_TYPE_DATA
- || source.subtype.media & BRASERO_MEDIUM_DVD) {
+ || source.subtype.media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL)) {
output->subtype.img_format = BRASERO_IMAGE_FORMAT_BIN;
result = brasero_burn_caps_is_output_supported (priv->caps,
priv->session,
Modified: trunk/src/brasero-disc-option-dialog.c
==============================================================================
--- trunk/src/brasero-disc-option-dialog.c (original)
+++ trunk/src/brasero-disc-option-dialog.c Sat May 10 16:03:08 2008
@@ -276,7 +276,7 @@
brasero_burn_session_get_input_type (priv->session, &input);
if (input.type == BRASERO_TRACK_TYPE_DATA
&& (input.subtype.fs_type & BRASERO_IMAGE_FS_VIDEO)
- && (brasero_burn_session_get_dest_media (priv->session) & BRASERO_MEDIUM_DVD)) {
+ && (brasero_burn_session_get_dest_media (priv->session) & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))) {
gtk_widget_set_sensitive (priv->multi_toggle, FALSE);
goto end;
}
Modified: trunk/src/brasero-drive-properties.c
==============================================================================
--- trunk/src/brasero-drive-properties.c (original)
+++ trunk/src/brasero-drive-properties.c Sat May 10 16:03:08 2008
@@ -245,7 +245,7 @@
{
gchar *text;
- if (media & BRASERO_MEDIUM_DVD)
+ if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
text = g_strdup_printf (_("%.1f x (DVD)"),
BRASERO_RATE_TO_SPEED_DVD (rate));
else if (media & BRASERO_MEDIUM_CD)
Modified: trunk/src/brasero-project-size.c
==============================================================================
--- trunk/src/brasero-project-size.c (original)
+++ trunk/src/brasero-project-size.c Sat May 10 16:03:08 2008
@@ -419,7 +419,7 @@
/* the number of interval needs to be reasonable, not over 8 not under 5 */
if (self->priv->is_audio_context)
interval_size = AUDIO_INTERVAL_CD;
- else if (self->priv->current->media & BRASERO_MEDIUM_DVD)
+ else if (self->priv->current->media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
interval_size = DATA_INTERVAL_DVD;
else
interval_size = DATA_INTERVAL_CD;
@@ -731,7 +731,7 @@
if (self->priv->is_audio_context)
interval_size = AUDIO_INTERVAL_CD;
- else if (self->priv->current->media & BRASERO_MEDIUM_DVD)
+ else if (self->priv->current->media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
interval_size = DATA_INTERVAL_DVD;
else
interval_size = DATA_INTERVAL_CD;
@@ -1061,7 +1061,7 @@
continue;
if (self->priv->is_audio_context
- && (drive->media & BRASERO_MEDIUM_DVD))
+ && (drive->media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL)))
continue;
if (!drive->medium && !separator) {
@@ -1091,7 +1091,7 @@
label = g_strdup_printf ("%s %s", size_str, name);
g_free (name);
}
- else if (drive->media & BRASERO_MEDIUM_DL)
+ else if (drive->media & BRASERO_MEDIUM_DVD_DL)
label = g_strdup_printf (_("%s (DVD-R Dual Layer)"),
size_str);
else if (drive->media & BRASERO_MEDIUM_DVD)
@@ -1129,7 +1129,7 @@
if (!drive->medium)
image = gtk_image_new_from_icon_name ("drive-optical", GTK_ICON_SIZE_MENU);
- else if (drive->media & BRASERO_MEDIUM_DVD)
+ else if (drive->media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
image = gtk_image_new_from_icon_name ("gnome-dev-disc-dvdr", GTK_ICON_SIZE_MENU);
else
image = gtk_image_new_from_icon_name ("gnome-dev-disc-cdr", GTK_ICON_SIZE_MENU);
@@ -1238,7 +1238,7 @@
iter = g_list_next (iter);
/* in an audio context only CDs are valid */
else if (self->priv->is_audio_context
- && (drive->media & BRASERO_MEDIUM_DVD))
+ && (drive->media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL)))
iter = g_list_next (iter);
/* we want a drive supported by the library */
else if (!(media_status & (BRASERO_MEDIUM_WRITABLE|BRASERO_MEDIUM_REWRITABLE)))
@@ -1281,7 +1281,7 @@
iter = g_list_previous (iter);
/* in an audio context only CDs are valid */
else if (self->priv->is_audio_context
- && (drive->media & BRASERO_MEDIUM_DVD))
+ && (drive->media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL)))
iter = g_list_previous (iter);
/* we want a drive supported by the library */
else if (!(media_status & (BRASERO_MEDIUM_WRITABLE|BRASERO_MEDIUM_REWRITABLE)))
@@ -1367,7 +1367,7 @@
media_status = brasero_burn_caps_media_capabilities (caps, current->media);
if (self->priv->is_audio_context
- && (current->media & BRASERO_MEDIUM_DVD)) {
+ && (current->media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))) {
current = NULL;
}
else if (!BRASERO_MEDIUM_VALID (current->media)) {
@@ -1411,7 +1411,7 @@
/* No DVD if context is audio */
if (self->priv->is_audio_context
- && (drive->media & BRASERO_MEDIUM_DVD))
+ && (drive->media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL)))
continue;
if (!BRASERO_MEDIUM_VALID (drive->media))
@@ -1482,7 +1482,7 @@
else if (!current->medium)
brasero_project_size_find_proper_drive (self);
else if (is_audio
- && (current->media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_APPENDABLE)))
+ && (current->media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL|BRASERO_MEDIUM_APPENDABLE)))
brasero_project_size_find_proper_drive (self);
brasero_project_size_disc_changed (self);
Modified: trunk/src/burn-caps.c
==============================================================================
--- trunk/src/burn-caps.c (original)
+++ trunk/src/burn-caps.c Sat May 10 16:03:08 2008
@@ -1990,7 +1990,8 @@
/* filter as we are only interested in these */
required_media &= BRASERO_MEDIUM_WRITABLE|
BRASERO_MEDIUM_CD|
- BRASERO_MEDIUM_DVD;
+ BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL;
return required_media;
}
@@ -2402,7 +2403,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)
+ if ((caps_a->type.subtype.media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
&& 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) -
@@ -2904,442 +2905,233 @@
return retval;
}
-GSList *
-brasero_caps_disc_new (BraseroMedia media)
+static GSList *
+brasero_caps_disc_lookup_or_create (GSList *retval,
+ BraseroMedia media)
{
GSList *iter;
- BraseroBurnCaps *self;
- GSList *retval = NULL;
- BraseroCaps *caps = NULL;
- GSList *encompassing = NULL;
-
- BRASERO_BURN_LOG_DISC_TYPE (media, "Creating new caps");
-
- self = brasero_burn_caps_get_default ();
+ BraseroCaps *caps;
- for (iter = self->priv->caps_list; iter; iter = iter->next) {
- BraseroMedia common;
- BraseroMedia media_less;
- BraseroMedia caps_media;
- BraseroMedia common_type;
- BraseroMedia common_attr;
- BraseroMedia common_info;
- BraseroMedia common_status;
- BraseroMedia common_subtype;
+ if (!default_caps)
+ brasero_burn_caps_get_default ();
+ for (iter = default_caps->priv->caps_list; iter; iter = iter->next) {
caps = iter->data;
-
- media_less = BRASERO_MEDIUM_NONE;
-
- if (caps->type.type != BRASERO_TRACK_TYPE_DISC)
- continue;
-
- caps_media = caps->type.subtype.media;
-
- if (caps_media == media) {
- retval = g_slist_prepend (retval, caps);
- goto end;
- }
-
- /* the media and the caps have something in common if and only
- * if type, status and attribute have all at least one thing in
- * common (and subtype if type is DVD) */
- common = (caps_media & media);
-
- common_type = BRASERO_MEDIUM_TYPE (common);
- if (common_type == BRASERO_MEDIUM_NONE)
- continue;
-
- if (common_type & BRASERO_MEDIUM_DVD) {
- common_subtype = BRASERO_MEDIUM_SUBTYPE (common);
- if (common_subtype == BRASERO_MEDIUM_NONE)
- continue;
- }
- else
- common_subtype = BRASERO_MEDIUM_NONE;
-
- common_attr = BRASERO_MEDIUM_ATTR (common);
- if (common_attr == BRASERO_MEDIUM_NONE)
- continue;
-
- common_status = BRASERO_MEDIUM_STATUS (common);
- if (common_status == BRASERO_MEDIUM_NONE)
- continue;
-
- /* info flags are cumulative and not exclusive like above. i.e.
- * you can have DATA + PROTECTED or DATA + AUDIO. Moreover they
- * should only be found when CLOSED/APPENDABLE flags are set. */
- if (common_status & (BRASERO_MEDIUM_APPENDABLE|BRASERO_MEDIUM_CLOSED)) {
- common_info = BRASERO_MEDIUM_INFO (common);
- if (common_info == BRASERO_MEDIUM_NONE)
- continue;
- }
- else /* for blank disc */
- common_info = BRASERO_MEDIUM_NONE;
-
- if (BRASERO_MEDIUM_TYPE (caps_media) != common_type) {
- BraseroCaps *new_caps;
-
- /* common_type == media_type && common_type != caps_type
- * so caps_type encompasses media_type: split and keep
- * the part we are interested in */
- caps->type.subtype.media &= ~common_type;
-
- new_caps = brasero_caps_copy_deep (caps);
- new_caps->type.subtype.media &= ~BRASERO_MEDIUM_TYPE (caps_media);
- new_caps->type.subtype.media |= common_type;
-
- if (!(caps->type.subtype.media & BRASERO_MEDIUM_DVD)
- && (caps->type.subtype.media & BRASERO_MEDIUM_CD))
- caps->type.subtype.media &= ~(BRASERO_MEDIUM_DL|
- BRASERO_MEDIUM_PLUS|
- BRASERO_MEDIUM_SEQUENTIAL|
- BRASERO_MEDIUM_RESTRICTED);
-
- if (!(new_caps->type.subtype.media & BRASERO_MEDIUM_DVD)
- && (new_caps->type.subtype.media & BRASERO_MEDIUM_CD))
- new_caps->type.subtype.media &= ~(BRASERO_MEDIUM_DL|
- BRASERO_MEDIUM_PLUS|
- BRASERO_MEDIUM_SEQUENTIAL|
- BRASERO_MEDIUM_RESTRICTED);
-
- /* The order of the caps may have changed now */
- self->priv->caps_list = g_slist_sort (self->priv->caps_list,
- brasero_burn_caps_sort);
-
- self->priv->caps_list = g_slist_insert_sorted (self->priv->caps_list,
- new_caps,
- brasero_burn_caps_sort);
- caps = new_caps;
-
- media_less = common_type;
- if (!(media & BRASERO_MEDIUM_DVD)
- && (media & BRASERO_MEDIUM_CD))
- media_less |= (BRASERO_MEDIUM_DL|
- BRASERO_MEDIUM_PLUS|
- BRASERO_MEDIUM_SEQUENTIAL|
- BRASERO_MEDIUM_RESTRICTED);
- }
- else if (BRASERO_MEDIUM_TYPE (media) != common_type) {
- BraseroMedia first_half, second_half;
-
- /* common_type != media_type && common_type == caps_type
- * so caps_type encompasses media_type.
- * split the media in two and call ourselves for each */
- first_half = media & (~common_type);
-
- if (!(first_half & BRASERO_MEDIUM_DVD)
- && (first_half & BRASERO_MEDIUM_CD))
- first_half &= ~(BRASERO_MEDIUM_DL|
- BRASERO_MEDIUM_PLUS|
- BRASERO_MEDIUM_SEQUENTIAL|
- BRASERO_MEDIUM_RESTRICTED);
-
- retval = g_slist_concat (retval, brasero_caps_disc_new (first_half));
-
- second_half = media & (~BRASERO_MEDIUM_TYPE (media));
- second_half |= common_type;
-
- if (!(second_half & BRASERO_MEDIUM_DVD)
- && (second_half & BRASERO_MEDIUM_CD))
- second_half &= ~(BRASERO_MEDIUM_DL|
- BRASERO_MEDIUM_PLUS|
- BRASERO_MEDIUM_SEQUENTIAL|
- BRASERO_MEDIUM_RESTRICTED);
-
- retval = g_slist_concat (retval, brasero_caps_disc_new (second_half));
- goto end;
+ if (caps->type.subtype.media == media) {
+ BRASERO_BURN_LOG_WITH_TYPE (&caps->type,
+ caps->flags,
+ "Retrieved");
+ return g_slist_prepend (retval, caps);
}
+ }
- common_attr = BRASERO_MEDIUM_ATTR (caps->type.subtype.media & media);
- if (BRASERO_MEDIUM_ATTR (caps_media) != common_attr) {
- BraseroCaps *new_caps;
-
- /* common_attr == media_attr && common_attr != caps_attr
- * so caps_attr encompasses media_attr: split */
- caps->type.subtype.media &= ~common_attr;
-
- new_caps = brasero_caps_copy_deep (caps);
- new_caps->type.subtype.media &= ~BRASERO_MEDIUM_ATTR (caps_media);
- new_caps->type.subtype.media |= common_attr;
-
- if (!(caps->type.subtype.media & BRASERO_MEDIUM_REWRITABLE))
- caps->type.subtype.media &= ~BRASERO_MEDIUM_RESTRICTED;
-
- if (!(caps->type.subtype.media & BRASERO_MEDIUM_WRITABLE)
- && !(caps->type.subtype.media & BRASERO_MEDIUM_REWRITABLE)
- && (caps->type.subtype.media & BRASERO_MEDIUM_ROM))
- caps->type.subtype.media &= ~(BRASERO_MEDIUM_APPENDABLE|
- BRASERO_MEDIUM_SEQUENTIAL|
- BRASERO_MEDIUM_BLANK|
- BRASERO_MEDIUM_PLUS);
-
- if (!(new_caps->type.subtype.media & BRASERO_MEDIUM_REWRITABLE))
- new_caps->type.subtype.media &= ~BRASERO_MEDIUM_RESTRICTED;
-
- if (!(new_caps->type.subtype.media & BRASERO_MEDIUM_WRITABLE)
- && !(new_caps->type.subtype.media & BRASERO_MEDIUM_REWRITABLE)
- && (new_caps->type.subtype.media & BRASERO_MEDIUM_ROM))
- new_caps->type.subtype.media &= ~(BRASERO_MEDIUM_SEQUENTIAL|
- BRASERO_MEDIUM_APPENDABLE|
- BRASERO_MEDIUM_BLANK|
- BRASERO_MEDIUM_PLUS);
-
- /* The order of the caps may have changed now */
- self->priv->caps_list = g_slist_sort (self->priv->caps_list,
- brasero_burn_caps_sort);
-
- self->priv->caps_list = g_slist_insert_sorted (self->priv->caps_list,
- new_caps,
- brasero_burn_caps_sort);
- caps = new_caps;
-
- media_less = common_attr;
- if (!(media & BRASERO_MEDIUM_WRITABLE)
- && !(media & BRASERO_MEDIUM_REWRITABLE)
- && (media & BRASERO_MEDIUM_ROM))
- media_less |= (BRASERO_MEDIUM_SEQUENTIAL|
- BRASERO_MEDIUM_APPENDABLE|
- BRASERO_MEDIUM_BLANK|
- BRASERO_MEDIUM_PLUS);
-
- if (!(media & BRASERO_MEDIUM_REWRITABLE))
- media_less |= BRASERO_MEDIUM_RESTRICTED;
- }
- else if (BRASERO_MEDIUM_ATTR (media) != common_attr) {
- BraseroMedia first_half, second_half;
- /* common_attr != media_attr && common_attr == caps_attr
- * so media_attr encompasses caps_attr:
- * split the media in two and call ourselves for each */
- first_half = (media|common_type|common_subtype) & (~common_attr);
-
- if (!(first_half & BRASERO_MEDIUM_WRITABLE)
- && !(first_half & BRASERO_MEDIUM_REWRITABLE)
- && (first_half & BRASERO_MEDIUM_ROM))
- first_half &= ~(BRASERO_MEDIUM_SEQUENTIAL|
- BRASERO_MEDIUM_APPENDABLE|
- BRASERO_MEDIUM_BLANK|
- BRASERO_MEDIUM_PLUS);
-
- if (!(first_half & BRASERO_MEDIUM_REWRITABLE))
- first_half &= ~BRASERO_MEDIUM_RESTRICTED;
-
- retval = g_slist_concat (retval, brasero_caps_disc_new (first_half));
-
- second_half = (media|common_type|common_subtype) & (~(BRASERO_MEDIUM_ATTR (media)));
- second_half |= common_attr;
-
- if (!(second_half & BRASERO_MEDIUM_WRITABLE)
- && !(second_half & BRASERO_MEDIUM_REWRITABLE)
- && (second_half & BRASERO_MEDIUM_ROM))
- second_half &= ~(BRASERO_MEDIUM_SEQUENTIAL|
- BRASERO_MEDIUM_APPENDABLE|
- BRASERO_MEDIUM_BLANK|
- BRASERO_MEDIUM_PLUS);
-
- if (!(second_half & BRASERO_MEDIUM_REWRITABLE))
- second_half &= ~BRASERO_MEDIUM_RESTRICTED;
-
- retval = g_slist_concat (retval, brasero_caps_disc_new (second_half));
- goto end;
- }
-
- if (common_type & BRASERO_MEDIUM_DVD) {
- common_subtype = BRASERO_MEDIUM_SUBTYPE (caps->type.subtype.media & media);
- if (BRASERO_MEDIUM_SUBTYPE (caps_media) != common_subtype) {
- BraseroCaps *new_caps;
+ caps = g_new0 (BraseroCaps, 1);
+ caps->flags = BRASERO_PLUGIN_IO_ACCEPT_FILE;
+ caps->type.type = BRASERO_TRACK_TYPE_DISC;
+ caps->type.subtype.media = media;
- /* common_subtype == media_subtype &&
- * common_subtype != caps_subtype
- * so caps_subtype encompasses media_subtype:
- * split and keep the part we are interested in
- */
- caps->type.subtype.media &= ~common_subtype;
-
- new_caps = brasero_caps_copy_deep (caps);
- new_caps->type.subtype.media &= ~BRASERO_MEDIUM_SUBTYPE (caps_media);
- new_caps->type.subtype.media |= common_subtype;
-
- if (!(caps->type.subtype.media & BRASERO_MEDIUM_PLUS)
- && !(caps->type.subtype.media & BRASERO_MEDIUM_SEQUENTIAL)
- && (caps->type.subtype.media & BRASERO_MEDIUM_RESTRICTED))
- caps->type.subtype.media &= ~(BRASERO_MEDIUM_WRITABLE);
-
- if (!(new_caps->type.subtype.media & BRASERO_MEDIUM_PLUS)
- && !(new_caps->type.subtype.media & BRASERO_MEDIUM_SEQUENTIAL)
- && (new_caps->type.subtype.media & BRASERO_MEDIUM_RESTRICTED))
- new_caps->type.subtype.media &= ~(BRASERO_MEDIUM_WRITABLE);
-
- /* The order of the caps may have changed now */
- self->priv->caps_list = g_slist_sort (self->priv->caps_list,
- brasero_burn_caps_sort);
-
- self->priv->caps_list = g_slist_insert_sorted (self->priv->caps_list,
- new_caps,
- brasero_burn_caps_sort);
-
- caps = new_caps;
- media_less = common_subtype;
-
- if (!(media & BRASERO_MEDIUM_PLUS)
- && !(media & BRASERO_MEDIUM_SEQUENTIAL)
- && (media & BRASERO_MEDIUM_RESTRICTED))
- media_less |= (BRASERO_MEDIUM_WRITABLE);
- }
- else if (BRASERO_MEDIUM_SUBTYPE (media) != common_subtype) {
- BraseroMedia first_half, second_half;
-
- /* common_subtype != media_subtype &&
- * common_subtype == caps_subtype
- * so caps_subtype encompasses media_subtype.
- * split the media in two and call ourselves for
- * each */
- first_half = (media|common_type) & (~common_subtype);
-
- if (!(first_half & BRASERO_MEDIUM_PLUS)
- && !(first_half & BRASERO_MEDIUM_SEQUENTIAL)
- && (first_half & BRASERO_MEDIUM_RESTRICTED))
- first_half &= ~(BRASERO_MEDIUM_WRITABLE);
-
- retval = g_slist_concat (retval, brasero_caps_disc_new (first_half));
-
- second_half = (media|common_type) & (~BRASERO_MEDIUM_SUBTYPE (media));
- second_half |= common_subtype;
-
- if (!(second_half & BRASERO_MEDIUM_PLUS)
- && !(second_half & BRASERO_MEDIUM_SEQUENTIAL)
- && (second_half & BRASERO_MEDIUM_RESTRICTED))
- second_half &= ~(BRASERO_MEDIUM_WRITABLE);
-
- retval = g_slist_concat (retval, brasero_caps_disc_new (second_half));
- goto end;
- }
- }
-
- common_status = BRASERO_MEDIUM_STATUS (caps->type.subtype.media & media);
- if (BRASERO_MEDIUM_STATUS (caps_media) != common_status) {
- BraseroCaps *new_caps;
-
- /* common_status == media_status && common_status != caps_status
- * so caps_status encompasses media_status: split */
- caps->type.subtype.media &= ~common_status;
-
- new_caps = brasero_caps_copy_deep (caps);
- new_caps->type.subtype.media &= ~BRASERO_MEDIUM_STATUS (caps_media);
- new_caps->type.subtype.media |= common_status;
-
- if (!(caps->type.subtype.media & BRASERO_MEDIUM_APPENDABLE)
- && !(caps->type.subtype.media & BRASERO_MEDIUM_CLOSED)
- && (caps->type.subtype.media & BRASERO_MEDIUM_BLANK))
- caps->type.subtype.media &= ~(BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA);
-
- if (!(new_caps->type.subtype.media & BRASERO_MEDIUM_APPENDABLE)
- && !(new_caps->type.subtype.media & BRASERO_MEDIUM_CLOSED)
- && (new_caps->type.subtype.media & BRASERO_MEDIUM_BLANK))
- new_caps->type.subtype.media &= ~(BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA);
-
- /* The order of the caps may have changed now */
- self->priv->caps_list = g_slist_sort (self->priv->caps_list,
- brasero_burn_caps_sort);
-
- self->priv->caps_list = g_slist_insert_sorted (self->priv->caps_list,
- new_caps,
- brasero_burn_caps_sort);
-
- caps = new_caps;
-
- media_less = common_status;
- if (!(media & BRASERO_MEDIUM_APPENDABLE)
- && !(media & BRASERO_MEDIUM_CLOSED)
- && (media & BRASERO_MEDIUM_BLANK))
- media_less |= (BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA);
- }
- else if (BRASERO_MEDIUM_STATUS (media) != common_status) {
- BraseroMedia first_half, second_half;
-
- /* common_status != media_status && common_status == caps_status
- * so caps_status encompasses media_status:
- * split the media in two and call ourselves for each */
- first_half = (media|common_type|common_subtype|common_attr) & (~common_status);
-
- if (!(first_half & BRASERO_MEDIUM_APPENDABLE)
- && !(first_half & BRASERO_MEDIUM_CLOSED)
- && (first_half & BRASERO_MEDIUM_BLANK))
- first_half &= ~(BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA);
-
- retval = g_slist_concat (retval, brasero_caps_disc_new (first_half));
-
- second_half = (media|common_type|common_subtype|common_attr) & (~BRASERO_MEDIUM_STATUS (media));
- second_half |= common_status;
-
- if (!(second_half & BRASERO_MEDIUM_APPENDABLE)
- && !(second_half & BRASERO_MEDIUM_CLOSED)
- && (second_half & BRASERO_MEDIUM_BLANK))
- second_half &= ~(BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA);
-
- retval = g_slist_concat (retval, brasero_caps_disc_new (second_half));
- goto end;
- }
+ BRASERO_BURN_LOG_WITH_TYPE (&caps->type,
+ caps->flags,
+ "Created");
- media &= ~media_less;
+ default_caps->priv->caps_list = g_slist_prepend (default_caps->priv->caps_list, caps);
+ return g_slist_prepend (retval, caps);
+}
- /* If we find a caps encompassing ours then duplicate it.
- * If we find a caps encompassed by ours then add it to retval.
- * The above rule also applies to perfect hit */
+static GSList *
+brasero_caps_disc_new_status (GSList *retval,
+ BraseroMedia media,
+ BraseroMedia type)
+{
+ if ((type & BRASERO_MEDIUM_BLANK)
+ && !(media & BRASERO_MEDIUM_ROM)) {
+ /* if media is blank there is no other possible property */
+ if (!(media & BRASERO_MEDIUM_ROM))
+ retval = brasero_caps_disc_lookup_or_create (retval, media | BRASERO_MEDIUM_BLANK);
+ }
+
+ if (type & BRASERO_MEDIUM_CLOSED) {
+ if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
+ retval = brasero_caps_disc_lookup_or_create (retval,
+ media|
+ BRASERO_MEDIUM_CLOSED|
+ (type & BRASERO_MEDIUM_HAS_DATA)|
+ (type & BRASERO_MEDIUM_PROTECTED));
+ else if (media & BRASERO_MEDIUM_HAS_AUDIO)
+ retval = brasero_caps_disc_lookup_or_create (retval,
+ media|
+ BRASERO_MEDIUM_CLOSED|
+ BRASERO_MEDIUM_HAS_AUDIO);
+ else if (media & BRASERO_MEDIUM_HAS_DATA)
+ retval = brasero_caps_disc_lookup_or_create (retval,
+ media|
+ BRASERO_MEDIUM_CLOSED|
+ BRASERO_MEDIUM_HAS_DATA);
+ else if (BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA))
+ retval = brasero_caps_disc_lookup_or_create (retval,
+ media|
+ BRASERO_MEDIUM_CLOSED|
+ BRASERO_MEDIUM_HAS_DATA|
+ BRASERO_MEDIUM_HAS_AUDIO);
+ }
+
+ 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)
+ retval = brasero_caps_disc_lookup_or_create (retval,
+ media|
+ BRASERO_MEDIUM_APPENDABLE|
+ BRASERO_MEDIUM_HAS_DATA);
+ else if (media & BRASERO_MEDIUM_HAS_AUDIO)
+ retval = brasero_caps_disc_lookup_or_create (retval,
+ media|
+ BRASERO_MEDIUM_APPENDABLE|
+ BRASERO_MEDIUM_HAS_AUDIO);
+ else if (media & BRASERO_MEDIUM_HAS_DATA)
+ retval = brasero_caps_disc_lookup_or_create (retval,
+ media|
+ BRASERO_MEDIUM_APPENDABLE|
+ BRASERO_MEDIUM_HAS_DATA);
+ else if (BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA))
+ retval = brasero_caps_disc_lookup_or_create (retval,
+ media|
+ BRASERO_MEDIUM_HAS_DATA|
+ BRASERO_MEDIUM_APPENDABLE|
+ BRASERO_MEDIUM_HAS_AUDIO);
+ }
- /* for perfect hit and encompassed caps */
- if (common_info == BRASERO_MEDIUM_INFO (caps->type.subtype.media)) {
- retval = g_slist_prepend (retval, caps);
+ return retval;
+}
- if (common_info == BRASERO_MEDIUM_INFO (media))
- break;
+static GSList *
+brasero_caps_disc_new_attribute (GSList *retval,
+ 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_caps_disc_new_status (retval,
+ media|BRASERO_MEDIUM_REWRITABLE,
+ type);
+ /* There is no dual layer DVD-RW */
+ else if (!(media & BRASERO_MEDIUM_DVD_DL))
+ retval = brasero_caps_disc_new_status (retval,
+ media|BRASERO_MEDIUM_REWRITABLE,
+ type);
+ }
+
+ if ((type & BRASERO_MEDIUM_WRITABLE)
+ && !(media & BRASERO_MEDIUM_RESTRICTED))
+ retval = brasero_caps_disc_new_status (retval,
+ media|BRASERO_MEDIUM_WRITABLE,
+ type);
+
+ if ((type & BRASERO_MEDIUM_ROM)
+ && !(media & BRASERO_MEDIUM_RESTRICTED)
+ && !(media & BRASERO_MEDIUM_SEQUENTIAL)
+ && !(media & BRASERO_MEDIUM_PLUS)
+ && !(media & BRASERO_MEDIUM_JUMP))
+ retval = brasero_caps_disc_new_status (retval,
+ media|BRASERO_MEDIUM_ROM,
+ type);
- continue;
- }
+ return retval;
+}
- /* strictly encompassing caps: the problem is that there could
- * many other strictly encompassing caps in the list and we need
- * their links, caps point ... as wellif we need to create that
- * perfect hit. So we add them to a list and they are stricly
- * encompassing */
- if (common_info == BRASERO_MEDIUM_INFO (media))
- encompassing = g_slist_prepend (encompassing, caps);
+static GSList *
+brasero_caps_disc_new_subtype (GSList *retval,
+ BraseroMedia media,
+ BraseroMedia type)
+{
+ if (media & BRASERO_MEDIUM_BD) {
+ if (type & BRASERO_MEDIUM_RANDOM)
+ retval = brasero_caps_disc_new_attribute (retval,
+ media|BRASERO_MEDIUM_RANDOM,
+ type);
+ if (type & BRASERO_MEDIUM_SRM)
+ retval = brasero_caps_disc_new_attribute (retval,
+ media|BRASERO_MEDIUM_SRM,
+ type);
+ if (type & BRASERO_MEDIUM_POW)
+ retval = brasero_caps_disc_new_attribute (retval,
+ media|BRASERO_MEDIUM_POW,
+ type);
+ }
+
+ if (media & BRASERO_MEDIUM_DVD) {
+ if (type & BRASERO_MEDIUM_SEQUENTIAL)
+ retval = brasero_caps_disc_new_attribute (retval,
+ media|BRASERO_MEDIUM_SEQUENTIAL,
+ type);
+
+ if (type & BRASERO_MEDIUM_RESTRICTED)
+ retval = brasero_caps_disc_new_attribute (retval,
+ media|BRASERO_MEDIUM_RESTRICTED,
+ type);
+
+ if (type & BRASERO_MEDIUM_PLUS)
+ retval = brasero_caps_disc_new_attribute (retval,
+ media|BRASERO_MEDIUM_PLUS,
+ type);
+ }
+
+ if (media & BRASERO_MEDIUM_DVD_DL) {
+ if (type & BRASERO_MEDIUM_SEQUENTIAL)
+ retval = brasero_caps_disc_new_attribute (retval,
+ media|BRASERO_MEDIUM_SEQUENTIAL,
+ type);
+
+ if (type & BRASERO_MEDIUM_JUMP)
+ retval = brasero_caps_disc_new_attribute (retval,
+ media|BRASERO_MEDIUM_JUMP,
+ type);
+
+ if (type & BRASERO_MEDIUM_PLUS)
+ retval = brasero_caps_disc_new_attribute (retval,
+ media|BRASERO_MEDIUM_PLUS,
+ type);
}
- if (BRASERO_MEDIUM_TYPE (media) == BRASERO_MEDIUM_NONE
- || ((BRASERO_MEDIUM_TYPE (media) & BRASERO_MEDIUM_DVD) && !(BRASERO_MEDIUM_ATTR (media) & BRASERO_MEDIUM_ROM) && BRASERO_MEDIUM_SUBTYPE (media) == BRASERO_MEDIUM_NONE)
- || BRASERO_MEDIUM_ATTR (media) == BRASERO_MEDIUM_NONE
- || BRASERO_MEDIUM_STATUS (media) == BRASERO_MEDIUM_NONE)
- goto end;
-
- /* no perfect hit was found */
- caps = g_new0 (BraseroCaps, 1);
- caps->flags = BRASERO_PLUGIN_IO_ACCEPT_FILE;
- caps->type.type = BRASERO_TRACK_TYPE_DISC;
- caps->type.subtype.media = media;
-
- if (encompassing) {
- for (iter = encompassing; iter; iter = iter->next) {
- BraseroCaps *iter_caps;
-
- iter_caps = iter->data;
- brasero_caps_replicate_links (caps, iter_caps);
- brasero_caps_replicate_tests (caps, iter_caps);
- brasero_caps_replicate_modifiers (caps, iter_caps);
- }
- }
-
- self->priv->caps_list = g_slist_insert_sorted (self->priv->caps_list,
- caps,
- brasero_burn_caps_sort);
+ return retval;
+}
- retval = g_slist_prepend (retval, caps);
+GSList *
+brasero_caps_disc_new (BraseroMedia type)
+{
+ GSList *retval = NULL;
-end:
+ if (type & BRASERO_MEDIUM_FILE)
+ retval = brasero_caps_disc_lookup_or_create (retval, BRASERO_MEDIUM_FILE);
- g_slist_free (encompassing);
+ if (type & BRASERO_MEDIUM_CD)
+ retval = brasero_caps_disc_new_attribute (retval,
+ BRASERO_MEDIUM_CD,
+ type);
+
+ if (type & BRASERO_MEDIUM_DVD)
+ retval = brasero_caps_disc_new_subtype (retval,
+ BRASERO_MEDIUM_DVD,
+ type);
+
+ if (type & BRASERO_MEDIUM_DVD_DL)
+ retval = brasero_caps_disc_new_subtype (retval,
+ BRASERO_MEDIUM_DVD_DL,
+ type);
+
+ if (type & BRASERO_MEDIUM_RAM)
+ retval = brasero_caps_disc_new_attribute (retval,
+ BRASERO_MEDIUM_RAM,
+ type);
+
+ if (type & BRASERO_MEDIUM_BD)
+ retval = brasero_caps_disc_new_subtype (retval,
+ BRASERO_MEDIUM_BD,
+ type);
- BRASERO_BURN_LOG ("Returning %i caps", g_slist_length (retval));
return retval;
}
Modified: trunk/src/burn-debug.c
==============================================================================
--- trunk/src/burn-debug.c (original)
+++ trunk/src/burn-debug.c Sat May 10 16:03:08 2008
@@ -181,6 +181,9 @@
if (media & BRASERO_MEDIUM_BD)
strcat (buffer, "BD ");
+ if (media & BRASERO_MEDIUM_DVD_DL)
+ strcat (buffer, "DL ");
+
/* DVD subtypes */
if (media & BRASERO_MEDIUM_PLUS)
strcat (buffer, "+ ");
@@ -191,8 +194,8 @@
if (media & BRASERO_MEDIUM_RESTRICTED)
strcat (buffer, "- (restricted) ");
- if (media & BRASERO_MEDIUM_DL)
- strcat (buffer, "DL ");
+ if (media & BRASERO_MEDIUM_JUMP)
+ strcat (buffer, "- (jump) ");
/* discs attributes */
if (media & BRASERO_MEDIUM_REWRITABLE)
Modified: trunk/src/burn-job.c
==============================================================================
--- trunk/src/burn-job.c (original)
+++ trunk/src/burn-job.c Sat May 10 16:03:08 2008
@@ -1418,7 +1418,7 @@
rate = brasero_burn_session_get_rate (session);
media = brasero_burn_session_get_dest_media (session);
- if (media & BRASERO_MEDIUM_DVD)
+ if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
*speed = BRASERO_RATE_TO_SPEED_DVD (rate);
else
*speed = BRASERO_RATE_TO_SPEED_CD (rate);
@@ -1469,7 +1469,7 @@
drive = brasero_burn_session_get_burner (session);
rate = brasero_medium_get_max_write_speed (medium);
media = brasero_medium_get_status (medium);
- if (media & BRASERO_MEDIUM_DVD)
+ if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
*speed = BRASERO_RATE_TO_SPEED_DVD (rate);
else
*speed = BRASERO_RATE_TO_SPEED_CD (rate);
Modified: trunk/src/burn-medium.c
==============================================================================
--- trunk/src/burn-medium.c (original)
+++ trunk/src/burn-medium.c Sat May 10 16:03:08 2008
@@ -1012,7 +1012,7 @@
break;
case BRASERO_SCSI_PROF_BR_R_SEQUENTIAL:
- priv->info = BRASERO_MEDIUM_BDR;
+ priv->info = BRASERO_MEDIUM_BDR_SRM;
priv->type = types [14];
priv->icon = icons [5];
break;
@@ -1245,7 +1245,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_DL|BRASERO_MEDIUM_WRITABLE))
+ if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVD_DL|BRASERO_MEDIUM_WRITABLE))
size = 48;
else if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_PLUS|BRASERO_MEDIUM_WRITABLE))
size = 40;
Modified: trunk/src/burn-medium.h
==============================================================================
--- trunk/src/burn-medium.h (original)
+++ trunk/src/burn-medium.h Sat May 10 16:03:08 2008
@@ -78,20 +78,24 @@
BRASERO_MEDIUM_DVD = 1 << 2,
- BRASERO_MEDIUM_RAM = 1 << 3,
+ BRASERO_MEDIUM_DVD_DL = 1 << 3,
- BRASERO_MEDIUM_BD = 1 << 4,
+ BRASERO_MEDIUM_RAM = 1 << 4,
- /* DVD subtypes */
- BRASERO_MEDIUM_PLUS = 1 << 5,
- BRASERO_MEDIUM_SEQUENTIAL = 1 << 6,
- BRASERO_MEDIUM_RESTRICTED = 1 << 7,
+ BRASERO_MEDIUM_BD = 1 << 5,
- BRASERO_MEDIUM_DL = 1 << 8,
+ /* DVD and DVD DL subtypes */
+ BRASERO_MEDIUM_PLUS = 1 << 6,
+ BRASERO_MEDIUM_SEQUENTIAL = 1 << 7,
+ BRASERO_MEDIUM_RESTRICTED = 1 << 8, /* DVD only */
- /* BD subtypes */
+ /* DVD dual layer only subtype */
BRASERO_MEDIUM_JUMP = 1 << 9,
+
+ /* BD subtypes */
BRASERO_MEDIUM_RANDOM = 1 << 10,
+ BRASERO_MEDIUM_SRM = 1 << 11,
+ BRASERO_MEDIUM_POW = 1 << 12,
/* discs attributes */
BRASERO_MEDIUM_REWRITABLE = 1 << 14,
@@ -108,15 +112,6 @@
BRASERO_MEDIUM_HAS_AUDIO = 1 << 22,
} BraseroMedia;
-#define BRASERO_MEDIUM_ALL_TYPE (BRASERO_MEDIUM_CD| \
- BRASERO_MEDIUM_DVD| \
- BRASERO_MEDIUM_DL| \
- BRASERO_MEDIUM_PLUS| \
- BRASERO_MEDIUM_RESTRICTED| \
- BRASERO_MEDIUM_SEQUENTIAL| \
- BRASERO_MEDIUM_ROM| \
- BRASERO_MEDIUM_WRITABLE| \
- BRASERO_MEDIUM_REWRITABLE)
#define BRASERO_MEDIUM_CDROM (BRASERO_MEDIUM_CD| \
BRASERO_MEDIUM_ROM)
#define BRASERO_MEDIUM_CDR (BRASERO_MEDIUM_CD| \
@@ -136,51 +131,49 @@
#define BRASERO_MEDIUM_DVDRW_RESTRICTED (BRASERO_MEDIUM_DVD| \
BRASERO_MEDIUM_REWRITABLE| \
BRASERO_MEDIUM_RESTRICTED)
-#define BRASERO_MEDIUM_DVDR_DL (BRASERO_MEDIUM_DVD| \
+#define BRASERO_MEDIUM_DVDR_DL (BRASERO_MEDIUM_DVD_DL| \
BRASERO_MEDIUM_WRITABLE| \
- BRASERO_MEDIUM_SEQUENTIAL| \
- BRASERO_MEDIUM_DL)
-#define BRASERO_MEDIUM_DVDR_JUMP_DL (BRASERO_MEDIUM_DVD| \
+ BRASERO_MEDIUM_SEQUENTIAL)
+#define BRASERO_MEDIUM_DVDR_JUMP_DL (BRASERO_MEDIUM_DVD_DL| \
BRASERO_MEDIUM_WRITABLE| \
- BRASERO_MEDIUM_JUMP| \
- BRASERO_MEDIUM_DL)
+ BRASERO_MEDIUM_JUMP)
#define BRASERO_MEDIUM_DVDR_PLUS (BRASERO_MEDIUM_DVD| \
BRASERO_MEDIUM_WRITABLE| \
BRASERO_MEDIUM_PLUS)
#define BRASERO_MEDIUM_DVDRW_PLUS (BRASERO_MEDIUM_DVD| \
BRASERO_MEDIUM_REWRITABLE| \
BRASERO_MEDIUM_PLUS)
-#define BRASERO_MEDIUM_DVDR_PLUS_DL (BRASERO_MEDIUM_DVD| \
+#define BRASERO_MEDIUM_DVDR_PLUS_DL (BRASERO_MEDIUM_DVD_DL| \
BRASERO_MEDIUM_WRITABLE| \
- BRASERO_MEDIUM_PLUS| \
- BRASERO_MEDIUM_DL)
-#define BRASERO_MEDIUM_DVDRW_PLUS_DL (BRASERO_MEDIUM_DVD| \
+ BRASERO_MEDIUM_PLUS)
+#define BRASERO_MEDIUM_DVDRW_PLUS_DL (BRASERO_MEDIUM_DVD_DL| \
BRASERO_MEDIUM_REWRITABLE| \
- BRASERO_MEDIUM_PLUS| \
- BRASERO_MEDIUM_DL)
+ BRASERO_MEDIUM_PLUS)
+
+/* Not recognized yet */
#define BRASERO_MEDIUM_BD_ROM (BRASERO_MEDIUM_BD| \
BRASERO_MEDIUM_ROM)
-#define BRASERO_MEDIUM_BDR (BRASERO_MEDIUM_DVD| \
- BRASERO_MEDIUM_WRITABLE| \
- BRASERO_MEDIUM_BD)
-#define BRASERO_MEDIUM_BDR_RANDOM (BRASERO_MEDIUM_DVD| \
+#define BRASERO_MEDIUM_BDR_SRM (BRASERO_MEDIUM_BD| \
+ BRASERO_MEDIUM_POW| \
+ BRASERO_MEDIUM_SRM| \
+ BRASERO_MEDIUM_WRITABLE)
+#define BRASERO_MEDIUM_BDR_RANDOM (BRASERO_MEDIUM_BD| \
BRASERO_MEDIUM_WRITABLE| \
- BRASERO_MEDIUM_RANDOM| \
- BRASERO_MEDIUM_BD)
-#define BRASERO_MEDIUM_BDRW (BRASERO_MEDIUM_DVD| \
- BRASERO_MEDIUM_REWRITABLE| \
- BRASERO_MEDIUM_PLUS| \
- BRASERO_MEDIUM_BD)
+ BRASERO_MEDIUM_RANDOM)
+#define BRASERO_MEDIUM_BDRW (BRASERO_MEDIUM_BD| \
+ BRASERO_MEDIUM_REWRITABLE)
+
+
#define BRASERO_MEDIUM_VALID(media) ((media) != BRASERO_MEDIUM_NONE \
&& (media) != BRASERO_MEDIUM_BUSY \
&& (media) != BRASERO_MEDIUM_UNSUPPORTED)
-#define BRASERO_MEDIUM_TYPE(media) ((media) & 0x001F)
+#define BRASERO_MEDIUM_TYPE(media) ((media) & 0x003F)
#define BRASERO_MEDIUM_ATTR(media) ((media) & 0x1C000)
#define BRASERO_MEDIUM_STATUS(media) ((media) & 0xE0000)
-#define BRASERO_MEDIUM_SUBTYPE(media) ((media) & 0x07E0)
+#define BRASERO_MEDIUM_SUBTYPE(media) ((media) & 0x1FC0)
#define BRASERO_MEDIUM_INFO(media) ((media) & 0x700000)
#define BRASERO_MEDIUM_IS(media, type) (((media)&(type))==(type))
Modified: trunk/src/burn.c
==============================================================================
--- trunk/src/burn.c (original)
+++ trunk/src/burn.c Sat May 10 16:03:08 2008
@@ -741,7 +741,7 @@
return BRASERO_BURN_ERROR_MEDIA_NOT_WRITABLE;
}
- else if (unsupported & BRASERO_MEDIUM_DVD)
+ else if (unsupported & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_DVD_DL))
return BRASERO_BURN_ERROR_DVD_NOT_SUPPORTED;
return BRASERO_BURN_ERROR_MEDIA_UNSUPPORTED;
@@ -951,9 +951,8 @@
again:
/* eject and ask the user to reload a disc */
- required_media = brasero_burn_caps_get_required_media_type (priv->caps,
- priv->session);
- required_media &= (BRASERO_MEDIUM_WRITABLE|BRASERO_MEDIUM_CD|BRASERO_MEDIUM_DVD);
+ 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);
result = brasero_burn_ask_for_dest_media (burn,
error_code,
Modified: trunk/src/plugins/cdrkit/burn-genisoimage.c
==============================================================================
--- trunk/src/plugins/cdrkit/burn-genisoimage.c (original)
+++ trunk/src/plugins/cdrkit/burn-genisoimage.c Sat May 10 16:03:08 2008
@@ -493,6 +493,7 @@
BRASERO_MEDIUM_CDRW|
BRASERO_MEDIUM_DVDR|
BRASERO_MEDIUM_DVDRW|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_DVDR_PLUS|
BRASERO_MEDIUM_APPENDABLE|
BRASERO_MEDIUM_HAS_AUDIO|
Modified: trunk/src/plugins/cdrkit/burn-readom.c
==============================================================================
--- trunk/src/plugins/cdrkit/burn-readom.c (original)
+++ trunk/src/plugins/cdrkit/burn-readom.c Sat May 10 16:03:08 2008
@@ -389,6 +389,7 @@
input = brasero_caps_disc_new (BRASERO_MEDIUM_CD|
BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
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 Sat May 10 16:03:08 2008
@@ -491,6 +491,7 @@
BRASERO_MEDIUM_DVDR|
BRASERO_MEDIUM_DVDRW|
BRASERO_MEDIUM_DVDR_PLUS|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_APPENDABLE|
BRASERO_MEDIUM_HAS_AUDIO|
BRASERO_MEDIUM_HAS_DATA,
Modified: trunk/src/plugins/cdrtools/burn-readcd.c
==============================================================================
--- trunk/src/plugins/cdrtools/burn-readcd.c (original)
+++ trunk/src/plugins/cdrtools/burn-readcd.c Sat May 10 16:03:08 2008
@@ -399,6 +399,7 @@
input = brasero_caps_disc_new (BRASERO_MEDIUM_CD|
BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
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 Sat May 10 16:03:08 2008
@@ -1209,6 +1209,7 @@
* equivalent instead */
input = brasero_caps_disc_new (BRASERO_MEDIUM_CD|
BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_PLUS|
BRASERO_MEDIUM_RESTRICTED|
BRASERO_MEDIUM_SEQUENTIAL|
Modified: trunk/src/plugins/dvdcss/burn-dvdcss.c
==============================================================================
--- trunk/src/plugins/dvdcss/burn-dvdcss.c (original)
+++ trunk/src/plugins/dvdcss/burn-dvdcss.c Sat May 10 16:03:08 2008
@@ -635,6 +635,7 @@
BRASERO_PLUGIN_IO_ACCEPT_PIPE,
BRASERO_IMAGE_FORMAT_BIN);
input = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
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 Sat May 10 16:03:08 2008
@@ -154,6 +154,7 @@
{
/* NOTE: sequential and restricted are added later on demand */
const BraseroMedia media = BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
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 Sat May 10 16:03:08 2008
@@ -660,7 +660,9 @@
BRASERO_IMAGE_FORMAT_BIN);
output = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_PLUS|
+ BRASERO_MEDIUM_JUMP|
BRASERO_MEDIUM_SEQUENTIAL|
BRASERO_MEDIUM_WRITABLE|
BRASERO_MEDIUM_BLANK);
@@ -678,6 +680,7 @@
/* and images to DVD RW +/-(restricted) whatever the status */
output = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_PLUS|
BRASERO_MEDIUM_RESTRICTED|
BRASERO_MEDIUM_REWRITABLE|
@@ -691,9 +694,11 @@
/* for DATA type recording discs can be also appendable */
output = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_PLUS|
BRASERO_MEDIUM_RESTRICTED|
BRASERO_MEDIUM_SEQUENTIAL|
+ BRASERO_MEDIUM_JUMP|
BRASERO_MEDIUM_WRITABLE|
BRASERO_MEDIUM_REWRITABLE|
BRASERO_MEDIUM_BLANK|
@@ -712,6 +717,7 @@
/* growisofs has the possibility to record to closed DVD+RW/-restricted
* and to append some more data to them which makes it unique */
output = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_PLUS|
BRASERO_MEDIUM_RESTRICTED|
BRASERO_MEDIUM_REWRITABLE|
@@ -725,7 +731,9 @@
* NOTE: DAO et MULTI are exclusive. */
brasero_plugin_set_flags (plugin,
BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_SEQUENTIAL|
+ BRASERO_MEDIUM_JUMP|
BRASERO_MEDIUM_WRITABLE|
BRASERO_MEDIUM_REWRITABLE|
BRASERO_MEDIUM_BLANK,
@@ -738,7 +746,9 @@
brasero_plugin_set_flags (plugin,
BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_SEQUENTIAL|
+ BRASERO_MEDIUM_JUMP|
BRASERO_MEDIUM_WRITABLE|
BRASERO_MEDIUM_REWRITABLE|
BRASERO_MEDIUM_BLANK,
@@ -751,7 +761,9 @@
brasero_plugin_set_flags (plugin,
BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_SEQUENTIAL|
+ BRASERO_MEDIUM_JUMP|
BRASERO_MEDIUM_WRITABLE|
BRASERO_MEDIUM_REWRITABLE|
BRASERO_MEDIUM_APPENDABLE|
@@ -813,6 +825,7 @@
/* DVD+ R/RW don't support dummy mode */
brasero_plugin_set_flags (plugin,
BRASERO_MEDIUM_DVDR_PLUS|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_BLANK,
BRASERO_BURN_FLAG_DAO|
BRASERO_BURN_FLAG_BURNPROOF|
@@ -822,6 +835,7 @@
brasero_plugin_set_flags (plugin,
BRASERO_MEDIUM_DVDR_PLUS|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_BLANK,
BRASERO_BURN_FLAG_BURNPROOF|
BRASERO_BURN_FLAG_OVERBURN|
@@ -831,6 +845,7 @@
brasero_plugin_set_flags (plugin,
BRASERO_MEDIUM_DVDR_PLUS|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_APPENDABLE|
BRASERO_MEDIUM_HAS_DATA,
BRASERO_BURN_FLAG_BURNPROOF|
@@ -849,6 +864,7 @@
/* for DVD+RW */
brasero_plugin_set_flags (plugin,
BRASERO_MEDIUM_DVDRW_PLUS|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_BLANK,
BRASERO_BURN_FLAG_MULTI|
BRASERO_BURN_FLAG_DAO|
@@ -859,6 +875,7 @@
brasero_plugin_set_flags (plugin,
BRASERO_MEDIUM_DVDRW_PLUS|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_APPENDABLE|
BRASERO_MEDIUM_CLOSED|
BRASERO_MEDIUM_HAS_DATA,
@@ -871,6 +888,7 @@
brasero_plugin_set_flags (plugin,
BRASERO_MEDIUM_DVDRW_PLUS|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_APPENDABLE|
BRASERO_MEDIUM_CLOSED|
BRASERO_MEDIUM_HAS_DATA,
@@ -883,6 +901,7 @@
/* blank caps for +/restricted RW*/
output = brasero_caps_disc_new (BRASERO_MEDIUM_DVD|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_PLUS|
BRASERO_MEDIUM_RESTRICTED|
BRASERO_MEDIUM_REWRITABLE|
@@ -908,6 +927,7 @@
/* again DVD+RW don't support dummy */
brasero_plugin_set_blank_flags (plugin,
BRASERO_MEDIUM_DVDRW_PLUS|
+ BRASERO_MEDIUM_DVD_DL|
BRASERO_MEDIUM_APPENDABLE|
BRASERO_MEDIUM_HAS_DATA|
BRASERO_MEDIUM_BLANK|
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]