summaryrefslogtreecommitdiff
path: root/src/plugins/debugger
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@nokia.com>2012-01-13 15:50:35 +0100
committerKai Koehne <kai.koehne@nokia.com>2012-01-17 11:36:19 +0100
commitdaac078756a6fd1493b88ffea2ba318cc8c2bdf5 (patch)
tree2ff50375a2b249b1aa4d4a5c91e15ee24ce58655 /src/plugins/debugger
parent73464a1d9b96b2434f595f5715672e2ac8cbfefa (diff)
downloadqt-creator-daac078756a6fd1493b88ffea2ba318cc8c2bdf5.tar.gz
QmlCppEngine: Properly handle requestRemoteSetupCalls
Remember which engines called requestRemoteSetup. Change-Id: I75d11a21f0ebcbce1bba0aa4f653d1cc35b43483 Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com> Reviewed-by: hjk <qthjk@ovi.com> Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
Diffstat (limited to 'src/plugins/debugger')
-rw-r--r--src/plugins/debugger/qml/qmlcppengine.cpp27
-rw-r--r--src/plugins/debugger/qml/qmlcppengine.h3
2 files changed, 25 insertions, 5 deletions
diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp
index f8913f4049..02687b2186 100644
--- a/src/plugins/debugger/qml/qmlcppengine.cpp
+++ b/src/plugins/debugger/qml/qmlcppengine.cpp
@@ -92,6 +92,7 @@ private:
QmlEngine *m_qmlEngine;
DebuggerEngine *m_cppEngine;
DebuggerEngine *m_activeEngine;
+ QList<DebuggerEngine*> m_enginesAwaitingRemoteSetup;
int m_stackBoundary;
};
@@ -154,8 +155,9 @@ QmlCppEngine::QmlCppEngine(const DebuggerStartParameters &sp,
connect(d->m_qmlEngine->stackHandler(), SIGNAL(stackChanged()),
d, SLOT(qmlStackChanged()), Qt::QueuedConnection);
connect(d->m_cppEngine, SIGNAL(stackFrameCompleted()), this, SIGNAL(stackFrameCompleted()));
- connect(d->m_cppEngine, SIGNAL(requestRemoteSetup()), this, SIGNAL(requestRemoteSetup()));
connect(d->m_qmlEngine, SIGNAL(stackFrameCompleted()), this, SIGNAL(stackFrameCompleted()));
+ connect(d->m_cppEngine, SIGNAL(requestRemoteSetup()), this, SLOT(slaveEngineRequestedRemoteSetup()));
+ connect(d->m_qmlEngine, SIGNAL(requestRemoteSetup()), this, SLOT(slaveEngineRequestedRemoteSetup()));
}
QmlCppEngine::~QmlCppEngine()
@@ -462,6 +464,19 @@ void QmlCppEngine::notifyInferiorShutdownOk()
DebuggerEngine::notifyInferiorShutdownOk();
}
+void QmlCppEngine::slaveEngineRequestedRemoteSetup()
+{
+ DebuggerEngine *slaveEngine = qobject_cast<DebuggerEngine*>(sender());
+ QTC_ASSERT(slaveEngine, return);
+
+ bool emitRequest = d->m_enginesAwaitingRemoteSetup.isEmpty();
+ d->m_enginesAwaitingRemoteSetup << slaveEngine;
+
+ if (emitRequest) {
+ emit requestRemoteSetup();
+ }
+}
+
void QmlCppEngine::setupInferior()
{
EDEBUG("\nMASTER SETUP INFERIOR");
@@ -659,15 +674,17 @@ void QmlCppEngine::slaveEngineStateChanged
void QmlCppEngine::handleRemoteSetupDone(int gdbServerPort, int qmlPort)
{
EDEBUG("MASTER REMOTE SETUP DONE");
- d->m_qmlEngine->startParameters().qmlServerPort = qmlPort;
- d->m_cppEngine->handleRemoteSetupDone(gdbServerPort, qmlPort);
+ foreach (DebuggerEngine *slaveEngine, d->m_enginesAwaitingRemoteSetup)
+ slaveEngine->handleRemoteSetupDone(gdbServerPort, qmlPort);
+ d->m_enginesAwaitingRemoteSetup.clear();
}
void QmlCppEngine::handleRemoteSetupFailed(const QString &message)
{
EDEBUG("MASTER REMOTE SETUP FAILED");
- d->m_qmlEngine->handleRemoteSetupFailed(message);
- d->m_cppEngine->handleRemoteSetupFailed(message);
+ foreach (DebuggerEngine *slaveEngine, d->m_enginesAwaitingRemoteSetup)
+ slaveEngine->handleRemoteSetupFailed(message);
+ d->m_enginesAwaitingRemoteSetup.clear();
}
void QmlCppEngine::showMessage(const QString &msg, int channel, int timeout) const
diff --git a/src/plugins/debugger/qml/qmlcppengine.h b/src/plugins/debugger/qml/qmlcppengine.h
index a01ac4ef65..2b3b01bf6a 100644
--- a/src/plugins/debugger/qml/qmlcppengine.h
+++ b/src/plugins/debugger/qml/qmlcppengine.h
@@ -124,6 +124,9 @@ protected:
void notifyEngineRunAndInferiorRunOk();
void notifyInferiorShutdownOk();
+private slots:
+ void slaveEngineRequestedRemoteSetup();
+
private:
void engineStateChanged(DebuggerState newState);
void setState(DebuggerState newState, bool forced = false);