diff options
Diffstat (limited to 'src/libs/installer/fsengineclient.cpp')
-rw-r--r-- | src/libs/installer/fsengineclient.cpp | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/libs/installer/fsengineclient.cpp b/src/libs/installer/fsengineclient.cpp index c9aff560f..abc686fd9 100644 --- a/src/libs/installer/fsengineclient.cpp +++ b/src/libs/installer/fsengineclient.cpp @@ -44,6 +44,8 @@ #include "adminauthorization.h" #include "messageboxhandler.h" +#include <QElapsedTimer> + #include <QtCore/QCoreApplication> #include <QtCore/QMutex> #include <QtCore/QProcess> @@ -169,9 +171,9 @@ class FSEngineClientIterator : public QAbstractFileEngineIterator { public: FSEngineClientIterator(QDir::Filters filters, const QStringList &nameFilters, const QStringList &files) - : QAbstractFileEngineIterator(filters, nameFilters), - entries(files), - index(-1) + : QAbstractFileEngineIterator(filters, nameFilters) + , entries(files) + , index(-1) { } @@ -588,13 +590,13 @@ class FSEngineClientHandler::Private { public: Private() - : mutex(QMutex::Recursive), - port(0), - startServerAsAdmin(false), - serverStarted(false), - serverStarting(false), - active(false), - thread(new StillAliveThread) + : mutex(QMutex::Recursive) + , port(0) + , startServerAsAdmin(false) + , serverStarted(false) + , serverStarting(false) + , active(false) + , thread(new StillAliveThread) { thread->moveToThread(thread); } @@ -753,7 +755,7 @@ void FSEngineClientHandler::setActive(bool active) } /*! - Returns, wheter this FSEngineClientHandler is active or not. + Returns true when this FSEngineClientHandler is active. */ bool FSEngineClientHandler::isActive() const { @@ -809,8 +811,14 @@ void FSEngineClientHandler::Private::maybeStartServer() } if (serverStarted) { - QTcpSocket s; // now wait for the socket to arrive - serverStarted = FSEngineClientHandler::instance().connect(&s); + QElapsedTimer t; + t.start(); + while (serverStarting && serverStarted + && t.elapsed() < 30000) { // 30 seconds ought to be enough for the app to start + QTcpSocket s; + if (FSEngineClientHandler::instance().connect(&s)) + serverStarting = false; + } } serverStarting = false; } |