From f764604bb695df538da0c6eaa271c00947dfa5b1 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Thu, 30 Aug 2007 21:10:09 +0000 Subject: [PATCH] Remove the EventLoop hack which causes crashes when you close the application during loading svn path=/trunk/KDE/kdegraphics/okular/; revision=706608 --- generators/comicbook/unrar.cpp | 29 ++++------------------------- generators/comicbook/unrar.h | 5 ----- 2 files changed, 4 insertions(+), 30 deletions(-) diff --git a/generators/comicbook/unrar.cpp b/generators/comicbook/unrar.cpp index 05ea651a9..97125cb86 100644 --- a/generators/comicbook/unrar.cpp +++ b/generators/comicbook/unrar.cpp @@ -15,7 +15,7 @@ #include Unrar::Unrar() - : QObject( 0 ), mTempDir( 0 ), mErrorOccured( false ) + : QObject( 0 ), mTempDir( 0 ) { } @@ -41,22 +41,14 @@ bool Unrar::open( const QString &fileName ) connect( mProcess, SIGNAL( readyReadStandardOutput() ), SLOT( readFromStdout() ) ); connect( mProcess, SIGNAL( readyReadStandardError() ), SLOT( readFromStderr() ) ); - connect( mProcess, SIGNAL( finished( int, QProcess::ExitStatus ) ), SLOT( processExited() ) ); - connect( mProcess, SIGNAL( error( QProcess::ProcessError ) ), SLOT( processExited() ) ); mProcess->start( "unrar", QStringList() << "e" << mFileName << mTempDir->name(), QIODevice::ReadOnly ); - - mEventLoop.exec(); + bool ok = mProcess->waitForFinished( -1 ); delete mProcess; mProcess = 0; - if ( mErrorOccured ) { - mErrorOccured = false; - return false; - } - - return true; + return ok; } QStringList Unrar::list() @@ -68,12 +60,9 @@ QStringList Unrar::list() connect( mProcess, SIGNAL( readyReadStandardOutput() ), SLOT( readFromStdout() ) ); connect( mProcess, SIGNAL( readyReadStandardError() ), SLOT( readFromStderr() ) ); - connect( mProcess, SIGNAL( finished( int, QProcess::ExitStatus ) ), SLOT( processExited() ) ); - connect( mProcess, SIGNAL( error( QProcess::ProcessError ) ), SLOT( processError() ) ); mProcess->start( "unrar", QStringList() << "lb" << mFileName, QIODevice::ReadOnly ); - - mEventLoop.exec(); + mProcess->waitForFinished( -1 ); delete mProcess; mProcess = 0; @@ -100,14 +89,4 @@ void Unrar::readFromStderr() mStdErrData += mProcess->readAllStandardError(); } -void Unrar::processExited() -{ - mEventLoop.exit(); -} - -void Unrar::processError() -{ - mErrorOccured = true; -} - #include "unrar.moc" diff --git a/generators/comicbook/unrar.h b/generators/comicbook/unrar.h index 600ee966f..eb2f589ea 100644 --- a/generators/comicbook/unrar.h +++ b/generators/comicbook/unrar.h @@ -10,7 +10,6 @@ #ifndef UNRAR_H #define UNRAR_H -#include #include #include @@ -48,19 +47,15 @@ class Unrar : public QObject QByteArray contentOf( const QString &fileName ) const; private Q_SLOTS: - void processExited(); - void processError(); void readFromStdout(); void readFromStderr(); private: QProcess *mProcess; - QEventLoop mEventLoop; QString mFileName; QByteArray mStdOutData; QByteArray mStdErrData; KTempDir *mTempDir; - bool mErrorOccured; }; #endif