diff -ur k3b-2.0.2/libk3b/jobs/k3bdvdcopyjob.cpp k3b-2.0.2-use_growisofs_instead_of_wodim/libk3b/jobs/k3bdvdcopyjob.cpp
--- k3b-2.0.2/libk3b/jobs/k3bdvdcopyjob.cpp 2011-01-15 21:47:30.000000000 +0100
+++ k3b-2.0.2-use_growisofs_instead_of_wodim/libk3b/jobs/k3bdvdcopyjob.cpp 2011-04-23 02:48:59.000000000 +0200
@@ -169,13 +169,20 @@
// first let's determine which application to use
d->usedWritingApp = writingApp();
if ( d->usedWritingApp == K3b::WritingAppAuto ) {
- // let's default to cdrecord for the time being
+ // prefer growisofs to wodim, which doesn't work all that great for DVDs
+ // (and doesn't support BluRay at all)
+ if ( k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "wodim" ) )
+ d->usedWritingApp = K3b::WritingAppGrowisofs;
+ // otherwise, let's default to cdrecord for the time being
// FIXME: use growisofs for non-dao and non-auto mode
- if ( K3b::Device::isBdMedia( d->sourceDiskInfo.mediaType() ) ) {
- if ( k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "blu-ray" ) )
+ else {
+ if ( K3b::Device::isBdMedia( d->sourceDiskInfo.mediaType() ) ) {
+ if ( k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "blu-ray" ) )
+ d->usedWritingApp = K3b::WritingAppCdrecord;
+ else
+ d->usedWritingApp = K3b::WritingAppGrowisofs;
+ } else
d->usedWritingApp = K3b::WritingAppCdrecord;
- else
- d->usedWritingApp = K3b::WritingAppGrowisofs;
}
}
diff -ur k3b-2.0.2/libk3b/jobs/k3bmetawriter.cpp k3b-2.0.2-use_growisofs_instead_of_wodim/libk3b/jobs/k3bmetawriter.cpp
--- k3b-2.0.2/libk3b/jobs/k3bmetawriter.cpp 2011-01-15 21:47:30.000000000 +0100
+++ k3b-2.0.2-use_growisofs_instead_of_wodim/libk3b/jobs/k3bmetawriter.cpp 2011-04-23 02:42:06.000000000 +0200
@@ -261,11 +261,13 @@
bool cdrecordOnTheFly = false;
bool cdrecordCdText = false;
bool cdrecordBluRay = false;
+ bool cdrecordWodim = false;
bool growisofsBluRay = false;
if( k3bcore->externalBinManager()->binObject("cdrecord") ) {
cdrecordOnTheFly = k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "audio-stdin" );
cdrecordCdText = k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "cdtext" );
cdrecordBluRay = k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "blu-ray" );
+ cdrecordWodim = k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "wodim" );
}
if( k3bcore->externalBinManager()->binObject("growisofs") ) {
growisofsBluRay = k3bcore->externalBinManager()->binObject("growisofs")->hasFeature( "blu-ray" );
@@ -316,10 +318,16 @@
d->usedWritingApp = WritingAppGrowisofs;
}
else if( mediaType & Device::MEDIA_DVD_ALL ) {
- d->usedWritingApp = WritingAppCdrecord;
+ // wodim (at least on fedora) doesn't do DVDs all that well, use growisofs instead
+ if ( cdrecordWodim ) {
+ d->usedWritingApp = WritingAppGrowisofs;
+ }
+ else {
+ d->usedWritingApp = WritingAppCdrecord;
+ }
}
else if( mediaType & Device::MEDIA_BD_ALL ) {
- if( cdrecordBluRay ) {
+ if( cdrecordBluRay && ! cdrecordWodim ) {
d->usedWritingApp = WritingAppCdrecord;
}
else if( growisofsBluRay ) {
diff -ur k3b-2.0.2/libk3b/projects/datacd/k3bdatajob.cpp k3b-2.0.2-use_growisofs_instead_of_wodim/libk3b/projects/datacd/k3bdatajob.cpp
--- k3b-2.0.2/libk3b/projects/datacd/k3bdatajob.cpp 2011-01-15 21:47:30.000000000 +0100
+++ k3b-2.0.2-use_growisofs_instead_of_wodim/libk3b/projects/datacd/k3bdatajob.cpp 2011-04-23 02:55:48.000000000 +0200
@@ -58,7 +58,7 @@
{
public:
Private()
- : usedWritingApp(K3b::WritingAppCdrecord),
+ : usedWritingApp(K3b::WritingAppAuto),
verificationJob( 0 ),
pipe( 0 ) {
}
@@ -813,8 +813,12 @@
d->usedWritingApp = writingApp();
// let's default to cdrecord for the time being (except for special cases below)
+ // but prefer growisofs to wodim for DVDs
if ( d->usedWritingApp == K3b::WritingAppAuto ) {
- d->usedWritingApp = K3b::WritingAppCdrecord;
+ if (k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "wodim" ))
+ d->usedWritingApp = K3b::WritingAppGrowisofs;
+ else
+ d->usedWritingApp = K3b::WritingAppCdrecord;
}
// -------------------------------
@@ -930,7 +934,10 @@
else if ( foundMedium & K3b::Device::MEDIA_BD_ALL ) {
d->usedWritingApp = writingApp();
if( d->usedWritingApp == K3b::WritingAppAuto ) {
- d->usedWritingApp = K3b::WritingAppCdrecord;
+ if (k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "wodim" ))
+ d->usedWritingApp = K3b::WritingAppGrowisofs;
+ else
+ d->usedWritingApp = K3b::WritingAppCdrecord;
}
if ( d->usedWritingApp == K3b::WritingAppCdrecord &&