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>
This commit is contained in:
Kai Koehne
2012-01-13 15:50:35 +01:00
parent 73464a1d9b
commit daac078756
2 changed files with 25 additions and 5 deletions

View File

@@ -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