From b6cb86eb537af3eb0d788d5089924ef2cc13911f Mon Sep 17 00:00:00 2001 From: Kai Koehne <kai.koehne@nokia.com> Date: Thu, 22 Mar 2012 13:00:56 +0100 Subject: [PATCH] QmlDebugger: Fix automatic connection setup Make sure we only try to connect when we're in the right state (EngineRunRequest). Specifically, stop to connect when the engine is finished. Change-Id: Ia4f1f79e8ac5b32ff436e63195516e242d4c120c Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com> --- src/plugins/debugger/qml/qmlengine.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 92d8b1b430d..ccf3e7a4c80 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -120,14 +120,16 @@ private: InteractiveInterpreter m_interpreter; bool m_validContext; QHash<QString,BreakpointModelId> pendingBreakpoints; - bool m_retryOnConnectFail; QList<quint32> queryIds; + bool m_retryOnConnectFail; + bool m_automaticConnect; }; QmlEnginePrivate::QmlEnginePrivate(QmlEngine *q) : m_adapter(q), m_validContext(false), - m_retryOnConnectFail(false) + m_retryOnConnectFail(false), + m_automaticConnect(false) {} class ASTWalker: public Visitor @@ -369,6 +371,7 @@ QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters, if (startParameters.useTerminal) { d->m_noDebugOutputTimer.setInterval(0); d->m_retryOnConnectFail = true; + d->m_automaticConnect = true; } } @@ -399,6 +402,9 @@ void QmlEngine::setupInferior() QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state()); notifyInferiorSetupOk(); + + if (d->m_automaticConnect) + beginConnection(); } void QmlEngine::appendMessage(const QString &msg, Utils::OutputFormat /* format */) @@ -423,12 +429,22 @@ void QmlEngine::tryToConnect(quint16 port) { showMessage(QLatin1String("QML Debugger: No application output received in time, trying to connect ..."), LogStatus); d->m_retryOnConnectFail = true; - beginConnection(port); + if (state() == EngineRunRequested + && !d->m_automaticConnect) + beginConnection(port); + else + d->m_automaticConnect = true; } void QmlEngine::beginConnection(quint16 port) { d->m_noDebugOutputTimer.stop(); + + if (state() != EngineRunRequested && d->m_retryOnConnectFail) + return; + + QTC_ASSERT(state() == EngineRunRequested, return) + if (port > 0) { QTC_CHECK(startParameters().communicationChannel == DebuggerStartParameters::CommunicationChannelTcpIp); -- GitLab