[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/k3b
From: Michal Malek <michalm () jabster ! pl>
Date: 2010-06-30 21:58:39
Message-ID: 20100630215839.2F8FAAC8E2 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1144817 by mmalek:
Fixed freeze on ripping Audio CD using external encoder.
It was caused by single kDebug() expression in the loop which was causing infinite \
loop when debug output was turned off. Fixed by using K3b::Process and its splitted \
output functionality.
BUG: 236466
M +5 -0 ChangeLog
M +11 -10 plugins/encoder/external/k3bexternalencoder.cpp
M +1 -1 plugins/encoder/external/k3bexternalencoder.h
--- trunk/extragear/multimedia/k3b/ChangeLog #1144816:1144817
@@ -4,6 +4,11 @@
* Added dynamic hiding of irrelevant actions in mixed project (142954)
* Added sorting in data project view (191660)
+2.0.1
+=====
+Bugfixes:
+ * Freeze on ripping Audio CD using external encoder to MP3 or FLAC (236466)
+
2.0
===
Changes (since 1.0.5):
--- trunk/extragear/multimedia/k3b/plugins/encoder/external/k3bexternalencoder.cpp \
#1144816:1144817 @@ -18,11 +18,11 @@
#include <config-k3b.h>
#include "k3bcore.h"
+#include "k3bprocess.h"
#include <KDebug>
#include <KConfig>
#include <KLocale>
-#include <KProcess>
#include <KStandardDirs>
#include <QFile>
@@ -72,7 +72,7 @@
class K3bExternalEncoder::Private
{
public:
- KProcess* process;
+ K3b::Process* process;
QString fileName;
K3b::Msf length;
@@ -181,15 +181,17 @@
disconnect( d->process );
d->process->deleteLater();
}
- d->process = new KProcess();
- d->process->setOutputChannelMode( KProcess::MergedChannels );
+ d->process = new K3b::Process();
+ d->process->setSplitStdout( true );
connect( d->process, SIGNAL(finished(int, QProcess::ExitStatus)),
this, SLOT(slotExternalProgramFinished(int, QProcess::ExitStatus)) \
);
- connect( d->process, SIGNAL(readyRead()),
- this, SLOT(slotExternalProgramOutput()) );
+ connect( d->process, SIGNAL(stderrLine(QString)),
+ this, SLOT(slotExternalProgramOutput(QString)) );
+ connect( d->process, SIGNAL(stdoutLine(QString)),
+ this, SLOT(slotExternalProgramOutput(QString)) );
d->process->setProgram( params );
- d->process->start();
+ d->process->start( KProcess::SeparateChannels );
if( d->process->waitForStarted() ) {
if( d->cmd.writeWaveHeader )
@@ -291,10 +293,9 @@
}
-void K3bExternalEncoder::slotExternalProgramOutput()
+void K3bExternalEncoder::slotExternalProgramOutput( const QString& line )
{
- while ( d->process->canReadLine() )
- kDebug() << "(" << d->cmd.name << ") " << d->process->readLine();
+ kDebug() << "(" << d->cmd.name << ") " << line;
}
--- trunk/extragear/multimedia/k3b/plugins/encoder/external/k3bexternalencoder.h \
#1144816:1144817 @@ -43,7 +43,7 @@
private Q_SLOTS:
void slotExternalProgramFinished( int, QProcess::ExitStatus );
- void slotExternalProgramOutput();
+ void slotExternalProgramOutput( const QString& line );
private:
virtual bool initEncoderInternal( const QString& extension, const K3b::Msf& \
length, const MetaData& metaData );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic