diff options
author | Kai Koehne <kai.koehne@nokia.com> | 2012-03-16 16:44:24 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-24 15:58:25 +0200 |
commit | 05e57b7736f8c370476e197fc9d4f77f2cb01605 (patch) | |
tree | 5198341ca5e694ecada4e176eb44915684920517 /tests/auto/qml/debugger/shared | |
parent | bacc47f5a42f7da05ead35c4c4f2adf427ced786 (diff) |
Debugger: Make sure stateChanged is called from debugger thread
Make sure stateAboutToBeChanged(), stateChanged() is always called
from the debugger thread. This matches how messageReceived()
is called. On exit, run an event loop until all stateAboutToBeChanged
calls have returned.
Change-Id: I9cd6199cc80552ad97e4b7d504ea91aa116a6a34
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
Diffstat (limited to 'tests/auto/qml/debugger/shared')
-rw-r--r-- | tests/auto/qml/debugger/shared/qqmldebugtestservice.cpp | 15 | ||||
-rw-r--r-- | tests/auto/qml/debugger/shared/qqmldebugtestservice.h | 4 |
2 files changed, 18 insertions, 1 deletions
diff --git a/tests/auto/qml/debugger/shared/qqmldebugtestservice.cpp b/tests/auto/qml/debugger/shared/qqmldebugtestservice.cpp index 1c8afd836b..33f5fc6ab9 100644 --- a/tests/auto/qml/debugger/shared/qqmldebugtestservice.cpp +++ b/tests/auto/qml/debugger/shared/qqmldebugtestservice.cpp @@ -40,6 +40,7 @@ ****************************************************************************/ #include "qqmldebugtestservice.h" +#include <QThread> QQmlDebugTestService::QQmlDebugTestService(const QString &s, float version, QObject *parent) : QQmlDebugService(s, version, parent) @@ -49,10 +50,22 @@ QQmlDebugTestService::QQmlDebugTestService(const QString &s, float version, QObj void QQmlDebugTestService::messageReceived(const QByteArray &ba) { - sendMessage(ba); + Q_ASSERT(QThread::currentThread() != thread()); + QMetaObject::invokeMethod(this, "_sendMessage", Qt::QueuedConnection, Q_ARG(QByteArray, ba)); +} + +void QQmlDebugTestService::stateAboutToBeChanged(QQmlDebugService::State state) +{ + Q_ASSERT(QThread::currentThread() != thread()); } void QQmlDebugTestService::stateChanged(State) { + Q_ASSERT(QThread::currentThread() != thread()); emit stateHasChanged(); } + +void QQmlDebugTestService::_sendMessage(const QByteArray &msg) +{ + QQmlDebugService::sendMessage(msg); +} diff --git a/tests/auto/qml/debugger/shared/qqmldebugtestservice.h b/tests/auto/qml/debugger/shared/qqmldebugtestservice.h index 14fda551de..4b9fb47c06 100644 --- a/tests/auto/qml/debugger/shared/qqmldebugtestservice.h +++ b/tests/auto/qml/debugger/shared/qqmldebugtestservice.h @@ -54,8 +54,12 @@ public: signals: void stateHasChanged(); +private slots: + void _sendMessage(const QByteArray &msg); + protected: virtual void messageReceived(const QByteArray &ba); + virtual void stateAboutToBeChanged(State state); virtual void stateChanged(State state); }; |