From 2b84f9f3696dde27bfcc7373ff296703c160705a Mon Sep 17 00:00:00 2001 From: Aurindam Jana Date: Mon, 22 Aug 2011 13:08:58 +0200 Subject: [PATCH] Synchronize the client with the debug service The v8 engine is blocked till the client is connected to the service to ensure proper hitting of breakpoints. Task-number: QTCREATORBUG-5412 Change-Id: Iec772cb547a31fef4cccbd4bb1116699c52d20e5 Reviewed-on: http://codereview.qt.nokia.com/3308 Reviewed-by: Qt Sanity Bot Reviewed-by: Kai Koehne --- src/plugins/debugger/qml/qmladapter.cpp | 1 + src/plugins/debugger/qml/qmldebuggerclient.h | 4 +++- src/plugins/debugger/qml/qmlengine.cpp | 2 +- src/plugins/debugger/qml/qmlv8debuggerclient.cpp | 14 +++++++++++++- src/plugins/debugger/qml/qmlv8debuggerclient.h | 4 +++- src/plugins/debugger/qml/qscriptdebuggerclient.cpp | 5 ++++- src/plugins/debugger/qml/qscriptdebuggerclient.h | 4 +++- 7 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/plugins/debugger/qml/qmladapter.cpp b/src/plugins/debugger/qml/qmladapter.cpp index 4ec0e417a5..dbe23aab93 100644 --- a/src/plugins/debugger/qml/qmladapter.cpp +++ b/src/plugins/debugger/qml/qmladapter.cpp @@ -170,6 +170,7 @@ void QmlAdapter::clientStatusChanged(QDeclarativeDebugClient::Status status) if (status == QDeclarativeDebugClient::Enabled) { d->m_qmlClient = d->debugClients.value(serviceName); + d->m_qmlClient->connect(); d->m_qmlClient->flushSendBuffer(); } } diff --git a/src/plugins/debugger/qml/qmldebuggerclient.h b/src/plugins/debugger/qml/qmldebuggerclient.h index 93c05299e2..a7391f65b0 100644 --- a/src/plugins/debugger/qml/qmldebuggerclient.h +++ b/src/plugins/debugger/qml/qmldebuggerclient.h @@ -52,6 +52,9 @@ public: QmlDebuggerClient(QmlJsDebugClient::QDeclarativeDebugConnection* client, QLatin1String clientName); virtual ~QmlDebuggerClient(); + virtual void connect() = 0; + virtual void disconnect() = 0; + virtual void executeStep() = 0; virtual void executeStepOut() = 0; virtual void executeNext() = 0; @@ -59,7 +62,6 @@ public: virtual void continueInferior() = 0; virtual void interruptInferior() = 0; - virtual void shutdownInferior() = 0; virtual void activateFrame(int index) = 0; diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 9ff95179ee..0af34b1357 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -375,7 +375,7 @@ void QmlEngine::handleRemoteSetupFailed(const QString &message) void QmlEngine::shutdownInferior() { - d->m_adapter.activeDebuggerClient()->shutdownInferior(); + d->m_adapter.activeDebuggerClient()->disconnect(); if (isSlaveEngine()) { resetLocation(); diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp index 9c99a4fef3..2a6c4f5f33 100644 --- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp +++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp @@ -192,7 +192,19 @@ void QmlV8DebuggerClient::interruptInferior() } -void QmlV8DebuggerClient::shutdownInferior() +void QmlV8DebuggerClient::connect() +{ + QByteArray request; + + JsonInputStream(request) << '{' << INITIALPARAMS ; + JsonInputStream(request) << ',' << "command" << ':' << "connect"; + + JsonInputStream(request) << '}'; + + sendMessage(packMessage(request)); +} + +void QmlV8DebuggerClient::disconnect() { QByteArray request; diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.h b/src/plugins/debugger/qml/qmlv8debuggerclient.h index decb635b5f..b3ff37bd4e 100644 --- a/src/plugins/debugger/qml/qmlv8debuggerclient.h +++ b/src/plugins/debugger/qml/qmlv8debuggerclient.h @@ -52,6 +52,9 @@ public: explicit QmlV8DebuggerClient(QmlJsDebugClient::QDeclarativeDebugConnection *client); ~QmlV8DebuggerClient(); + void connect(); + void disconnect(); + void executeStep(); void executeStepOut(); void executeNext(); @@ -59,7 +62,6 @@ public: void continueInferior(); void interruptInferior(); - void shutdownInferior(); void activateFrame(int index); diff --git a/src/plugins/debugger/qml/qscriptdebuggerclient.cpp b/src/plugins/debugger/qml/qscriptdebuggerclient.cpp index 6246e2ce89..692fef36e7 100644 --- a/src/plugins/debugger/qml/qscriptdebuggerclient.cpp +++ b/src/plugins/debugger/qml/qscriptdebuggerclient.cpp @@ -192,9 +192,12 @@ void QScriptDebuggerClient::interruptInferior() sendMessage(reply); } -void QScriptDebuggerClient::shutdownInferior() +void QScriptDebuggerClient::connect() { +} +void QScriptDebuggerClient::disconnect() +{ } void QScriptDebuggerClient::activateFrame(int index) diff --git a/src/plugins/debugger/qml/qscriptdebuggerclient.h b/src/plugins/debugger/qml/qscriptdebuggerclient.h index 9ebb93d4b7..6723347f01 100644 --- a/src/plugins/debugger/qml/qscriptdebuggerclient.h +++ b/src/plugins/debugger/qml/qscriptdebuggerclient.h @@ -51,6 +51,9 @@ public: QScriptDebuggerClient(QmlJsDebugClient::QDeclarativeDebugConnection *client); ~QScriptDebuggerClient(); + void connect(); + void disconnect(); + void executeStep(); void executeStepOut(); void executeNext(); @@ -58,7 +61,6 @@ public: void continueInferior(); void interruptInferior(); - void shutdownInferior(); void activateFrame(int index); -- 2.11.0