Группа :: Архивирование/Создание CD
Пакет: kde5-k3b
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: alt-return-wodim.patch
Скачать
Скачать
--- b/libk3b/core/k3bdefaultexternalprograms.cpp
+++ a/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") );
--- b/libk3b/jobs/k3bdvdcopyjob.cpp
+++ a/libk3b/jobs/k3bdvdcopyjob.cpp
@@ -171,7 +171,7 @@ void K3b::DvdCopyJob::slotDiskInfoReady(
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
--- b/libk3b/jobs/k3bmetawriter.cpp
+++ a/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" );
--- b/libk3b/projects/datacd/k3bdatajob.cpp
+++ a/libk3b/projects/datacd/k3bdatajob.cpp
@@ -811,9 +811,12 @@ bool K3b::DataJob::waitForBurnMedium()
d->usedWritingApp = writingApp();
// let's default to cdrecord for the time being (except for special cases below)
- // but prefer growisofs for DVDs
+ // 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;
}
// -------------------------------
@@ -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 &&
--- b/libk3b/projects/k3bcdrecordwriter.cpp
+++ a/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 );
--- b/libk3bdevice/k3bdevice.cpp
+++ a/libk3bdevice/k3bdevice.cpp
@@ -3611,7 +3611,7 @@ int K3b::Device::Device::nextWritableAddress() const
//
// The state of the last session has to be "empty" (0x0) or "incomplete" (0x1)
- // The procedure here is taken from the dvd+rw-tools
+ // The procedure here is taken from the dvd+rw-tools and wodim
//
if( !(inf->border & 0x2) ) {
// the incomplete track number is the first track in the last session (the empty session)
--- b/src/k3bsystemproblemdialog.cpp
+++ a/src/k3bsystemproblemdialog.cpp
@@ -231,7 +231,8 @@ 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,
--- b/src/option/k3bexternalbinpermissionmodel.cpp
+++ a/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;