From 29c0f0bfef4af34a3d56a8270b07fa3b1f7c5ed9 Mon Sep 17 00:00:00 2001
From: Aurindam Jana <aurindam.jana@nokia.com>
Date: Wed, 24 Aug 2011 17:35:07 +0200
Subject: [PATCH] Debugger: Client Service synchronization

Sends connect command after all initial commands have been sent.
This ensures that the initialization is complete before the start
of the debugging session.

Change-Id: I1903caa9c213fef4e6b40df89a352d80e350a46d
Reviewed-on: http://codereview.qt.nokia.com/3526
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
---
 src/plugins/debugger/qml/qmladapter.cpp            |  2 +-
 src/plugins/debugger/qml/qmldebuggerclient.h       |  4 ++--
 src/plugins/debugger/qml/qmlengine.cpp             |  2 +-
 src/plugins/debugger/qml/qmlv8debuggerclient.cpp   |  4 ++--
 src/plugins/debugger/qml/qmlv8debuggerclient.h     |  4 ++--
 src/plugins/debugger/qml/qscriptdebuggerclient.cpp | 12 ++++++++----
 src/plugins/debugger/qml/qscriptdebuggerclient.h   |  4 ++--
 7 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/src/plugins/debugger/qml/qmladapter.cpp b/src/plugins/debugger/qml/qmladapter.cpp
index dbe23aab931..5765b518da2 100644
--- a/src/plugins/debugger/qml/qmladapter.cpp
+++ b/src/plugins/debugger/qml/qmladapter.cpp
@@ -170,8 +170,8 @@ 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();
+        d->m_qmlClient->startSession();
     }
 }
 
diff --git a/src/plugins/debugger/qml/qmldebuggerclient.h b/src/plugins/debugger/qml/qmldebuggerclient.h
index 69ceb86fc7d..a9a8682c82d 100644
--- a/src/plugins/debugger/qml/qmldebuggerclient.h
+++ b/src/plugins/debugger/qml/qmldebuggerclient.h
@@ -52,8 +52,8 @@ public:
     QmlDebuggerClient(QmlJsDebugClient::QDeclarativeDebugConnection* client, QLatin1String clientName);
     virtual ~QmlDebuggerClient();
 
-    virtual void connect() = 0;
-    virtual void disconnect() = 0;
+    virtual void startSession() = 0;
+    virtual void endSession() = 0;
 
     virtual void executeStep() = 0;
     virtual void executeStepOut() = 0;
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index ebdbbb4e057..f65d8d2f178 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()->disconnect();
+    d->m_adapter.activeDebuggerClient()->endSession();
 
     if (isSlaveEngine()) {
         resetLocation();
diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
index 157c028c6a6..692c080d049 100644
--- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
+++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
@@ -192,7 +192,7 @@ void QmlV8DebuggerClient::interruptInferior()
 
 }
 
-void QmlV8DebuggerClient::connect()
+void QmlV8DebuggerClient::startSession()
 {
     QByteArray request;
 
@@ -204,7 +204,7 @@ void QmlV8DebuggerClient::connect()
     sendMessage(packMessage(request));
 }
 
-void QmlV8DebuggerClient::disconnect()
+void QmlV8DebuggerClient::endSession()
 {
     QByteArray request;
 
diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.h b/src/plugins/debugger/qml/qmlv8debuggerclient.h
index 70c0fec0557..04aeec17627 100644
--- a/src/plugins/debugger/qml/qmlv8debuggerclient.h
+++ b/src/plugins/debugger/qml/qmlv8debuggerclient.h
@@ -52,8 +52,8 @@ public:
     explicit QmlV8DebuggerClient(QmlJsDebugClient::QDeclarativeDebugConnection *client);
     ~QmlV8DebuggerClient();
 
-    void connect();
-    void disconnect();
+    void startSession();
+    void endSession();
 
     void executeStep();
     void executeStepOut();
diff --git a/src/plugins/debugger/qml/qscriptdebuggerclient.cpp b/src/plugins/debugger/qml/qscriptdebuggerclient.cpp
index 755485200ec..03bc3bd9ce0 100644
--- a/src/plugins/debugger/qml/qscriptdebuggerclient.cpp
+++ b/src/plugins/debugger/qml/qscriptdebuggerclient.cpp
@@ -192,11 +192,17 @@ void QScriptDebuggerClient::interruptInferior()
     sendMessage(reply);
 }
 
-void QScriptDebuggerClient::connect()
+void QScriptDebuggerClient::startSession()
 {
+    //Set all breakpoints
+    BreakHandler *handler = d->engine->breakHandler();
+    foreach (BreakpointModelId id, handler->engineBreakpointIds(d->engine)) {
+        QTC_ASSERT(handler->state(id) == BreakpointInsertProceeding,/**/);
+        handler->notifyBreakpointInsertOk(id);
+    }
 }
 
-void QScriptDebuggerClient::disconnect()
+void QScriptDebuggerClient::endSession()
 {
 }
 
@@ -408,8 +414,6 @@ void QScriptDebuggerClient::messageReceived(const QByteArray &data)
             BreakHandler *handler = d->engine->breakHandler();
             foreach (BreakpointModelId id, handler->engineBreakpointIds(d->engine)) {
                 QString processedFilename = handler->fileName(id);
-                QTC_ASSERT(handler->state(id) == BreakpointInsertProceeding,/**/);
-                handler->notifyBreakpointInsertOk(id);
 
                 if (processedFilename == file && handler->lineNumber(id) == line) {
                     QTC_ASSERT(handler->state(id) == BreakpointInserted,/**/);
diff --git a/src/plugins/debugger/qml/qscriptdebuggerclient.h b/src/plugins/debugger/qml/qscriptdebuggerclient.h
index 79318cd806e..daafb90ef0f 100644
--- a/src/plugins/debugger/qml/qscriptdebuggerclient.h
+++ b/src/plugins/debugger/qml/qscriptdebuggerclient.h
@@ -51,8 +51,8 @@ public:
     QScriptDebuggerClient(QmlJsDebugClient::QDeclarativeDebugConnection *client);
     ~QScriptDebuggerClient();
 
-    void connect();
-    void disconnect();
+    void startSession();
+    void endSession();
 
     void executeStep();
     void executeStepOut();
-- 
GitLab