Debugger: Fix race condition in block mode, QQmlDebugServer
authorKai Koehne <kai.koehne@nokia.com>
Tue, 24 Apr 2012 11:31:17 +0000 (13:31 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 25 Apr 2012 09:46:05 +0000 (11:46 +0200)
Make sure that the first message hasn't already arrived before
we call d->messageArrivedCondition.wait().

Change-Id: I0d3df9adbd41f71df5c1c7d6df90c0037f494514
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
src/qml/debugger/qqmldebugserver.cpp

index fccb712..d49d04f 100644 (file)
@@ -303,14 +303,13 @@ QQmlDebugServer *QQmlDebugServer::instance()
                 qQmlDebugServer->moveToThread(thread);
                 thread->setPluginName(pluginName);
                 thread->setPort(port, block, hostAddress);
+
+                QQmlDebugServerPrivate *d = qQmlDebugServer->d_func();
+                QMutexLocker locker(&d->messageArrivedMutex);
                 thread->start();
 
-                if (block) {
-                    QQmlDebugServerPrivate *d = qQmlDebugServer->d_func();
-                    d->messageArrivedMutex.lock();
+                if (block)
                     d->messageArrivedCondition.wait(&d->messageArrivedMutex);
-                    d->messageArrivedMutex.unlock();
-                }
 
             } else {
                 qWarning() << QString(QLatin1String(