From kde-commits Wed Nov 09 06:34:21 2016 From: Leslie Zhai Date: Wed, 09 Nov 2016 06:34:21 +0000 To: kde-commits Subject: [k3b/cdrskin] /: Restore wodim support Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=147867327025644 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/k3bde= faultexternalprograms.cpp index cce10ff..03acd0b 100644 --- a/libk3b/core/k3bdefaultexternalprograms.cpp +++ b/libk3b/core/k3bdefaultexternalprograms.cpp @@ -172,13 +172,16 @@ QString K3b::AbstractCdrtoolsProgram::versionIdentifi= er( const ExternalBin& bin = = K3b::CdrecordProgram::CdrecordProgram() - : K3b::AbstractCdrtoolsProgram( QLatin1String( "cdrecord" ), QLatin1St= ring("cdrecord") ) + : K3b::AbstractCdrtoolsProgram( QLatin1String( "cdrecord" ), QLatin1St= ring( "wodim" ) ) { } = = void K3b::CdrecordProgram::parseFeatures( const QString& output, ExternalB= in& 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("-dv= d") ); 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::D= eviceHandler* dh ) if ( d->usedWritingApp =3D=3D K3b::WritingAppAuto ) { // prefer growisofs to wodim, which doesn't work all that grea= t for DVDs // (and doesn't support BluRay at all) - if (true) + if ( k3bcore->externalBinManager()->binObject("cdrecord")->has= Feature( "wodim" ) ) d->usedWritingApp =3D 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 =3D k3bcore->externalBinManager()->binObject("cdr= ecord")->hasFeature( "audio-stdin" ); cdrecordCdText =3D k3bcore->externalBinManager()->binObject("cdrec= ord")->hasFeature( "cdtext" ); cdrecordBluRay =3D k3bcore->externalBinManager()->binObject("cdrec= ord")->hasFeature( "blu-ray" ); + cdrecordWodim =3D k3bcore->externalBinManager()->binObject("cdreco= rd")->hasFeature( "wodim" ); } if( k3bcore->externalBinManager()->binObject("growisofs") ) { growisofsBluRay =3D k3bcore->externalBinManager()->binObject("grow= isofs")->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 specia= l cases below) // but prefer growisofs for DVDs if ( d->usedWritingApp =3D=3D K3b::WritingAppAuto ) { - d->usedWritingApp =3D K3b::WritingAppCdrecord; + if (k3bcore->externalBinManager()->binObject("cdrecord")->hasF= eature( "wodim" )) + d->usedWritingApp =3D K3b::WritingAppGrowisofs; + else + d->usedWritingApp =3D K3b::WritingAppCdrecord; } = // ------------------------------- @@ -929,7 +932,10 @@ bool K3b::DataJob::waitForBurnMedium() else if ( foundMedium & K3b::Device::MEDIA_BD_ALL ) { d->usedWritingApp =3D writingApp(); if( d->usedWritingApp =3D=3D K3b::WritingAppAuto ) { - d->usedWritingApp =3D K3b::WritingAppCdrecord; + if (k3bcore->externalBinManager()->binObject("cdrecord")->hasF= eature( "wodim" )) + d->usedWritingApp =3D K3b::WritingAppGrowisofs; + else + d->usedWritingApp =3D K3b::WritingAppCdrecord; } = if (d->usedWritingApp =3D=3D K3b::WritingAppCdrecord && diff --git a/libk3b/projects/k3bcdrecordwriter.cpp b/libk3b/projects/k3bcdr= ecordwriter.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 =E2=80=93 Copyright =C2=A9 %3" - ,QLatin1String("Cdrecord") + ,(d->cdrecordBinObject->hasFeature( "wodim"= ) ? "Wodim" : "Cdrecord" ) ,d->cdrecordBinObject->version() ,d->cdrecordBinObject->copyright()), Messag= eInfo ); = 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* pa= rent, 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() >=3D K3b::Version( 2, 6, 8 ) && - k3bcore->externalBinManager()->binObject( "cdrecord" )->ve= rsion() < K3b::Version( 2, 1, 1, "a05" ) ) { + k3bcore->externalBinManager()->binObject( "cdrecord" )->ve= rsion() < K3b::Version( 2, 1, 1, "a05" ) && !k3bcore->externalBinManager()-= >binObject( "cdrecord" )->hasFeature( "wodim" ) ) { if( k3bcore->externalBinManager()->binObject( "cdrecord" )= ->hasFeature( "suidroot" ) ) { showBinSettingsButton =3D true; problems.append( K3b::SystemProblem( K3b::SystemProble= m::CRITICAL, diff --git a/src/option/k3bexternalbinpermissionmodel.cpp b/src/option/k3be= xternalbinpermissionmodel.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() =3D=3D "cdrecord" ) { return ( K3b::simpleKernelVersion() < K3b::Version( 2, 6, 8 ) || - bin->version() >=3D K3b::Version( 2, 1, 1, "a05" ) ); + bin->version() >=3D K3b::Version( 2, 1, 1, "a05" ) || + bin->hasFeature( "wodim" ) ); } else if( bin->name() =3D=3D "cdrdao" ) { return true;