brasero r1771 - in trunk: . data src/plugins/cdrdao src/plugins/growisofs
- From: philippr svn gnome org
- To: svn-commits-list gnome org
- Subject: brasero r1771 - in trunk: . data src/plugins/cdrdao src/plugins/growisofs
- Date: Sat, 17 Jan 2009 13:58:39 +0000 (UTC)
Author: philippr
Date: Sat Jan 17 13:58:39 2009
New Revision: 1771
URL: http://svn.gnome.org/viewvc/brasero?rev=1771&view=rev
Log:
2009-01-17 Philippe Rouquier <ykw localhost localdomain>
Fix #564748 â Brasero fails to burn DVDs
This adds a workaround for some drives that don't work properly with
growisofs when DAO is on
Reworked patch by Luis Medinas
* data/brasero.schemas.in:
* src/plugins/cdrdao/burn-cdrdao.c (brasero_cdrdao_class_init):
* src/plugins/growisofs/Makefile.am:
* src/plugins/growisofs/burn-growisofs.c
(brasero_growisofs_export_caps):
Modified:
trunk/ChangeLog
trunk/data/brasero.schemas.in
trunk/src/plugins/cdrdao/burn-cdrdao.c
trunk/src/plugins/growisofs/Makefile.am
trunk/src/plugins/growisofs/burn-growisofs.c
Modified: trunk/data/brasero.schemas.in
==============================================================================
--- trunk/data/brasero.schemas.in (original)
+++ trunk/data/brasero.schemas.in Sat Jan 17 13:58:39 2009
@@ -42,6 +42,19 @@
</locale>
</schema>
+ <schema>
+ <key>/schemas/apps/brasero/config/dao_flag</key>
+ <applyto>/apps/brasero/config/dao_flag</applyto>
+ <owner>brasero</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Whether to use "-use-the-force-luke=dao" flag with growisofs</short>
+ <long>Whether to use "-use-the-force-luke=dao" flag with
+ growisofs. Set to false, brasero won't use it; it may be a workaround for some drives/setups.</long>
+ </locale>
+ </schema>
+
<schema>
<key>/schemas/apps/brasero/config/minbuf_value</key>
<applyto>/apps/brasero/config/minbuf_value</applyto>
@@ -63,7 +76,7 @@
<locale name="C">
<short>Whether to use "--driver generic-mmc-raw" flag with cdrdao</short>
<long>Whether to use "--driver generic-mmc-raw" flag with
- cdrdao. Set to True, brasero won't use it; it may be a workaround for some drives/setups.</long>
+ cdrdao. Set to True, brasero will use it; it may be a workaround for some drives/setups.</long>
</locale>
</schema>
Modified: trunk/src/plugins/cdrdao/burn-cdrdao.c
==============================================================================
--- trunk/src/plugins/cdrdao/burn-cdrdao.c (original)
+++ trunk/src/plugins/cdrdao/burn-cdrdao.c Sat Jan 17 13:58:39 2009
@@ -543,7 +543,7 @@
GObjectClass *object_class = G_OBJECT_CLASS (klass);
BraseroProcessClass *process_class = BRASERO_PROCESS_CLASS (klass);
- g_type_class_add_private (klass, sizeof(BraseroCdrdaoPrivate));
+ g_type_class_add_private (klass, sizeof (BraseroCdrdaoPrivate));
parent_class = g_type_class_peek_parent(klass);
object_class->finalize = brasero_cdrdao_finalize;
Modified: trunk/src/plugins/growisofs/Makefile.am
==============================================================================
--- trunk/src/plugins/growisofs/Makefile.am (original)
+++ trunk/src/plugins/growisofs/Makefile.am Sat Jan 17 13:58:39 2009
@@ -10,14 +10,15 @@
-DBRASERO_DATADIR=\"$(datadir)/brasero\" \
-DBRASERO_LIBDIR=\"$(libdir)\" \
$(DISABLE_DEPRECATED) \
- $(BRASERO_GLIB_CFLAGS)
+ $(BRASERO_GLIB_CFLAGS) \
+ $(BRASERO_GCONF_CFLAGS)
#growisofs
growisofsdir = $(libdir)/brasero/plugins
growisofs_LTLIBRARIES = libbrasero-growisofs.la
libbrasero_growisofs_la_SOURCES = burn-growisofs.c burn-growisofs.h \
burn-growisofs-common.h
-libbrasero_growisofs_la_LIBADD = $(BRASERO_GLIB_LIBS)
+libbrasero_growisofs_la_LIBADD = $(BRASERO_GLIB_LIBS) $(BRASERO_GCONF_LIBS)
libbrasero_growisofs_la_LDFLAGS = -module -avoid-version
#dvdrwformat
Modified: trunk/src/plugins/growisofs/burn-growisofs.c
==============================================================================
--- trunk/src/plugins/growisofs/burn-growisofs.c (original)
+++ trunk/src/plugins/growisofs/burn-growisofs.c Sat Jan 17 13:58:39 2009
@@ -40,6 +40,8 @@
#include <gmodule.h>
+#include <gconf/gconf-client.h>
+
#include "burn-basics.h"
#include "burn-plugin.h"
#include "burn-job.h"
@@ -53,6 +55,7 @@
struct BraseroGrowisofsPrivate {
guint use_utf8:1;
guint use_genisoimage:1;
+ guint use_dao:1;
};
typedef struct BraseroGrowisofsPrivate BraseroGrowisofsPrivate;
@@ -60,6 +63,8 @@
static GObjectClass *parent_class = NULL;
+#define GCONF_KEY_DAO_FLAG "/apps/brasero/config/dao_flag"
+
/* Process start */
static BraseroBurnResult
brasero_growisofs_read_stdout (BraseroProcess *process, const gchar *line)
@@ -418,7 +423,9 @@
* DVD+-R. It will close the disc. Which make sense since DAO means
* Disc At Once. That's checked in burn-caps.c with coherency checks.
* NOTE 2: dao is supported for DL DVD after 6.0 (think about that for
- * BurnCaps) */
+ * BurnCaps)
+ * Moreover even for single session DVDs it doesn't work properly so
+ * there is a workaround to turn it off entirely. */
if (flags & BRASERO_BURN_FLAG_DAO)
g_ptr_array_add (argv, g_strdup ("-use-the-force-luke=dao"));
@@ -709,7 +716,10 @@
static BraseroBurnResult
brasero_growisofs_export_caps (BraseroPlugin *plugin, gchar **error)
{
+ BraseroPluginConfOption *use_dao;
+ gboolean use_dao_gconf_key;
BraseroBurnResult result;
+ GConfClient *client;
GSList *output;
GSList *input;
@@ -811,15 +821,80 @@
g_slist_free (output);
g_slist_free (input);
- /* For DVD-W and DVD-RW sequential */
- BRASERO_PLUGIN_ADD_STANDARD_DVDR_FLAGS (plugin, BRASERO_BURN_FLAG_NONE);
+ /* For DVD-RW sequential */
BRASERO_PLUGIN_ADD_STANDARD_DVDRW_FLAGS (plugin, BRASERO_BURN_FLAG_NONE);
- /* see NOTE for DVD-RW restricted overwrite below */
+ /* see NOTE for DVD-RW restricted overwrite */
BRASERO_PLUGIN_ADD_STANDARD_DVDRW_RESTRICTED_FLAGS (plugin, BRASERO_BURN_FLAG_NONE);
- /* DVD+ W */
- BRASERO_PLUGIN_ADD_STANDARD_DVDR_PLUS_FLAGS (plugin, BRASERO_BURN_FLAG_NONE);
+ /* DVD+R and DVD-R. DAO and growisofs don't always work well with these
+ * types of media and with some drives. So don't allow it if the
+ * workaround is set in GConf. */
+ client = gconf_client_get_default ();
+ use_dao_gconf_key = gconf_client_get_bool (client,
+ GCONF_KEY_DAO_FLAG,
+ NULL);
+ g_object_unref (client);
+ if (use_dao_gconf_key == TRUE) {
+ BRASERO_PLUGIN_ADD_STANDARD_DVDR_FLAGS (plugin, BRASERO_BURN_FLAG_NONE);
+ BRASERO_PLUGIN_ADD_STANDARD_DVDR_PLUS_FLAGS (plugin, BRASERO_BURN_FLAG_NONE);
+ }
+ else {
+ /* All above standard flags minus DAO flag support */
+ brasero_plugin_set_flags (plugin,
+ BRASERO_MEDIUM_DVDR_PLUS|
+ BRASERO_MEDIUM_DUAL_L|
+ BRASERO_MEDIUM_BLANK,
+ (BRASERO_BURN_FLAG_BURNPROOF|
+ BRASERO_BURN_FLAG_OVERBURN|
+ BRASERO_BURN_FLAG_MULTI|
+ BRASERO_BURN_FLAG_NOGRACE) &
+ (~BRASERO_BURN_FLAG_NONE),
+ BRASERO_BURN_FLAG_NONE);
+
+ brasero_plugin_set_flags (plugin,
+ BRASERO_MEDIUM_DVDR_PLUS|
+ BRASERO_MEDIUM_DUAL_L|
+ BRASERO_MEDIUM_APPENDABLE|
+ BRASERO_MEDIUM_HAS_DATA,
+ (BRASERO_BURN_FLAG_MERGE|
+ BRASERO_BURN_FLAG_APPEND|
+ BRASERO_BURN_FLAG_BURNPROOF|
+ BRASERO_BURN_FLAG_OVERBURN|
+ BRASERO_BURN_FLAG_MULTI|
+ BRASERO_BURN_FLAG_NOGRACE) &
+ (~BRASERO_BURN_FLAG_NONE),
+ BRASERO_BURN_FLAG_APPEND);
+
+ brasero_plugin_set_flags (plugin,
+ BRASERO_MEDIUM_DVDR|
+ BRASERO_MEDIUM_DUAL_L|
+ BRASERO_MEDIUM_JUMP|
+ BRASERO_MEDIUM_BLANK,
+ (BRASERO_BURN_FLAG_BURNPROOF|
+ BRASERO_BURN_FLAG_OVERBURN|
+ BRASERO_BURN_FLAG_MULTI|
+ BRASERO_BURN_FLAG_DUMMY|
+ BRASERO_BURN_FLAG_NOGRACE) &
+ (~BRASERO_BURN_FLAG_NONE),
+ BRASERO_BURN_FLAG_NONE);
+
+ brasero_plugin_set_flags (plugin,
+ BRASERO_MEDIUM_DVDR|
+ BRASERO_MEDIUM_DUAL_L|
+ BRASERO_MEDIUM_JUMP|
+ BRASERO_MEDIUM_APPENDABLE|
+ BRASERO_MEDIUM_HAS_DATA,
+ (BRASERO_BURN_FLAG_APPEND|
+ BRASERO_BURN_FLAG_MERGE|
+ BRASERO_BURN_FLAG_BURNPROOF|
+ BRASERO_BURN_FLAG_OVERBURN|
+ BRASERO_BURN_FLAG_MULTI|
+ BRASERO_BURN_FLAG_DUMMY|
+ BRASERO_BURN_FLAG_NOGRACE) &
+ (~BRASERO_BURN_FLAG_NONE),
+ BRASERO_BURN_FLAG_APPEND);
+ }
/* for DVD+RW */
BRASERO_PLUGIN_ADD_STANDARD_DVDRW_PLUS_FLAGS (plugin, BRASERO_BURN_FLAG_NONE);
@@ -870,6 +945,12 @@
BRASERO_BURN_FLAG_FAST_BLANK,
BRASERO_BURN_FLAG_FAST_BLANK);
+ use_dao = brasero_plugin_conf_option_new (GCONF_KEY_DAO_FLAG,
+ _("Allow DAO use"),
+ BRASERO_PLUGIN_OPTION_BOOL);
+
+ brasero_plugin_add_conf_option (plugin, use_dao);
+
brasero_plugin_register_group (plugin, _(GROWISOFS_DESCRIPTION));
return BRASERO_BURN_OK;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]