diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 92d8b1b430d0cc0ce5542e1a529f004fa471fbaf..ccf3e7a4c801c7ef809cb0a61a2fc1184dd15eaf 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);