aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/debugger/shared
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@nokia.com>2012-03-16 16:44:24 +0100
committerQt by Nokia <qt-info@nokia.com>2012-04-24 15:58:25 +0200
commit05e57b7736f8c370476e197fc9d4f77f2cb01605 (patch)
tree5198341ca5e694ecada4e176eb44915684920517 /tests/auto/qml/debugger/shared
parentbacc47f5a42f7da05ead35c4c4f2adf427ced786 (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.cpp15
-rw-r--r--tests/auto/qml/debugger/shared/qqmldebugtestservice.h4
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);
};