[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [k3b/cdrskin] /: Restore wodim support
From:       Leslie Zhai <xiangzhai83 () gmail ! com>
Date:       2016-11-09 6:34:21
Message-ID: E1c4MSj-00047O-86 () code ! kde ! org
[Download RAW message or body]

Git commit abe673e2f1b9b016d3a9c3aaad42d808a80a0b4a by Leslie Zhai.
Committed on 09/11/2016 at 06:30.
Pushed by lesliezhai into branch 'cdrskin'.

Restore wodim support

Although wodim from cdrkit (CD only, DVD deprecated, unmaintained) was
unmaintained, Kevin Kofler suggested restoring it. Please review it, if
it looks good to you, I will merge to master.

CCMAIL: kevin.kofler@chello.at
CCBUG: 372094

M  +4    -1    libk3b/core/k3bdefaultexternalprograms.cpp
M  +1    -1    libk3b/jobs/k3bdvdcopyjob.cpp
M  +1    -0    libk3b/jobs/k3bmetawriter.cpp
M  +8    -2    libk3b/projects/datacd/k3bdatajob.cpp
M  +1    -1    libk3b/projects/k3bcdrecordwriter.cpp
M  +1    -1    src/k3bsystemproblemdialog.cpp
M  +2    -1    src/option/k3bexternalbinpermissionmodel.cpp

http://commits.kde.org/k3b/abe673e2f1b9b016d3a9c3aaad42d808a80a0b4a

diff --git a/libk3b/core/k3bdefaultexternalprograms.cpp \
b/libk3b/core/k3bdefaultexternalprograms.cpp index cce10ff..03acd0b 100644
--- a/libk3b/core/k3bdefaultexternalprograms.cpp
+++ b/libk3b/core/k3bdefaultexternalprograms.cpp
@@ -172,13 +172,16 @@ QString K3b::AbstractCdrtoolsProgram::versionIdentifier( const \
ExternalBin& bin  
 
 K3b::CdrecordProgram::CdrecordProgram()
-    : K3b::AbstractCdrtoolsProgram( QLatin1String( "cdrecord" ), \
QLatin1String("cdrecord") ) +    : K3b::AbstractCdrtoolsProgram( QLatin1String( \
"cdrecord" ), QLatin1String( "wodim" ) )  {
 }
 
 
 void K3b::CdrecordProgram::parseFeatures( const QString& output, ExternalBin& bin ) \
const  {
+    if( usingCdrkit( bin ) )
+        bin.addFeature( "wodim" );
+
     if( bin.version().suffix().endsWith( "-dvd" ) ) {
         bin.addFeature( "dvd-patch" );
         bin.setVersion( QString(bin.version().versionString()).remove("-dvd") );
diff --git a/libk3b/jobs/k3bdvdcopyjob.cpp b/libk3b/jobs/k3bdvdcopyjob.cpp
index 6edf80b..0bc7b38 100644
--- a/libk3b/jobs/k3bdvdcopyjob.cpp
+++ b/libk3b/jobs/k3bdvdcopyjob.cpp
@@ -171,7 +171,7 @@ void K3b::DvdCopyJob::slotDiskInfoReady( \
K3b::Device::DeviceHandler* dh )  if ( d->usedWritingApp == K3b::WritingAppAuto ) {
             // prefer growisofs to wodim, which doesn't work all that great for DVDs
             // (and doesn't support BluRay at all)
-            if (true)
+            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
diff --git a/libk3b/jobs/k3bmetawriter.cpp b/libk3b/jobs/k3bmetawriter.cpp
index b0f7b11..35a26dd 100644
--- a/libk3b/jobs/k3bmetawriter.cpp
+++ b/libk3b/jobs/k3bmetawriter.cpp
@@ -266,6 +266,7 @@ bool K3b::MetaWriter::determineUsedAppAndMode()
         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" );
diff --git a/libk3b/projects/datacd/k3bdatajob.cpp \
b/libk3b/projects/datacd/k3bdatajob.cpp index 315845a..a59997a 100644
--- a/libk3b/projects/datacd/k3bdatajob.cpp
+++ b/libk3b/projects/datacd/k3bdatajob.cpp
@@ -813,7 +813,10 @@ bool K3b::DataJob::waitForBurnMedium()
         // let's default to cdrecord for the time being (except for special cases \
below)  // but prefer growisofs 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;
         }
 
         // -------------------------------
@@ -929,7 +932,10 @@ bool K3b::DataJob::waitForBurnMedium()
     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 &&
diff --git a/libk3b/projects/k3bcdrecordwriter.cpp \
b/libk3b/projects/k3bcdrecordwriter.cpp index 2670cf2..65fda1e 100644
--- a/libk3b/projects/k3bcdrecordwriter.cpp
+++ b/libk3b/projects/k3bcdrecordwriter.cpp
@@ -399,7 +399,7 @@ void K3b::CdrecordWriter::start()
 
     if( !d->cdrecordBinObject->copyright().isEmpty() )
         emit infoMessage( i18n("Using %1 %2 – Copyright  © %3"
-                               ,QLatin1String("Cdrecord")
+                               ,(d->cdrecordBinObject->hasFeature( "wodim" ) ? \
"Wodim" : "Cdrecord" )  ,d->cdrecordBinObject->version()
                                ,d->cdrecordBinObject->copyright()), MessageInfo );
 
diff --git a/src/k3bsystemproblemdialog.cpp b/src/k3bsystemproblemdialog.cpp
index 7ff5c19..125af31 100644
--- a/src/k3bsystemproblemdialog.cpp
+++ b/src/k3bsystemproblemdialog.cpp
@@ -231,7 +231,7 @@ void K3b::SystemProblemDialog::checkSystem( QWidget* parent, \
                NotificationLevel l
             // Kernel 2.6.16.something seems to introduce another problem which was \
apparently worked around in cdrecord 2.01.01a05  //
             if( K3b::simpleKernelVersion() >= K3b::Version( 2, 6, 8 ) &&
-                k3bcore->externalBinManager()->binObject( "cdrecord" )->version() < \
K3b::Version( 2, 1, 1, "a05" ) ) { +                \
k3bcore->externalBinManager()->binObject( "cdrecord" )->version() < K3b::Version( 2, \
1, 1, "a05" ) && !k3bcore->externalBinManager()->binObject( "cdrecord" )->hasFeature( \
                "wodim" ) ) {
                 if( k3bcore->externalBinManager()->binObject( "cdrecord" \
)->hasFeature( "suidroot" ) ) {  showBinSettingsButton = true;
                     problems.append( K3b::SystemProblem( \
                K3b::SystemProblem::CRITICAL,
diff --git a/src/option/k3bexternalbinpermissionmodel.cpp \
b/src/option/k3bexternalbinpermissionmodel.cpp index 949b521..da9bc42 100644
--- a/src/option/k3bexternalbinpermissionmodel.cpp
+++ b/src/option/k3bexternalbinpermissionmodel.cpp
@@ -46,7 +46,8 @@ bool shouldRunSuidRoot( const K3b::ExternalBin* bin )
 
     if( bin->name() == "cdrecord" ) {
         return ( K3b::simpleKernelVersion() < K3b::Version( 2, 6, 8 ) ||
-                 bin->version() >= K3b::Version( 2, 1, 1, "a05" ) );
+                 bin->version() >= K3b::Version( 2, 1, 1, "a05" ) ||
+                 bin->hasFeature( "wodim" ) );
     }
     else if( bin->name() == "cdrdao" ) {
         return true;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic