forked from qt-creator/qt-creator
QmlCppDebugger: Handling Stack
Use a common stackhandler in the mixed engine instead of individual stackhandlers in qml engine and cpp engine. Change-Id: If363fabb32ae7c6e652452ca2b2fbf8593e684a5 Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
This commit is contained in:
@@ -83,17 +83,12 @@ public:
|
||||
const DebuggerStartParameters &sp);
|
||||
~QmlCppEnginePrivate() {}
|
||||
|
||||
private slots:
|
||||
void cppStackChanged();
|
||||
void qmlStackChanged();
|
||||
|
||||
private:
|
||||
friend class QmlCppEngine;
|
||||
QmlCppEngine *q;
|
||||
QmlEngine *m_qmlEngine;
|
||||
DebuggerEngine *m_cppEngine;
|
||||
DebuggerEngine *m_activeEngine;
|
||||
int m_stackBoundary;
|
||||
};
|
||||
|
||||
|
||||
@@ -105,32 +100,6 @@ QmlCppEnginePrivate::QmlCppEnginePrivate(QmlCppEngine *parent,
|
||||
setObjectName(QLatin1String("QmlCppEnginePrivate"));
|
||||
}
|
||||
|
||||
void QmlCppEnginePrivate::cppStackChanged()
|
||||
{
|
||||
const QLatin1String firstFunction("QScript::FunctionWrapper::proxyCall");
|
||||
StackFrames frames;
|
||||
foreach (const StackFrame &frame, m_cppEngine->stackHandler()->frames()) {
|
||||
if (frame.function.endsWith(firstFunction))
|
||||
break;
|
||||
frames.append(frame);
|
||||
}
|
||||
int level = frames.size();
|
||||
m_stackBoundary = level;
|
||||
foreach (StackFrame frame, m_qmlEngine->stackHandler()->frames()) {
|
||||
frame.level = level++;
|
||||
frames.append(frame);
|
||||
}
|
||||
q->stackHandler()->setFrames(frames);
|
||||
}
|
||||
|
||||
void QmlCppEnginePrivate::qmlStackChanged()
|
||||
{
|
||||
StackFrames frames = m_qmlEngine->stackHandler()->frames();
|
||||
q->stackHandler()->setFrames(frames);
|
||||
m_stackBoundary = 0;
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// QmlCppEngine
|
||||
@@ -149,13 +118,6 @@ QmlCppEngine::QmlCppEngine(const DebuggerStartParameters &sp,
|
||||
return;
|
||||
}
|
||||
d->m_activeEngine = d->m_cppEngine;
|
||||
|
||||
connect(d->m_cppEngine->stackHandler(), SIGNAL(stackChanged()),
|
||||
d, SLOT(cppStackChanged()), Qt::QueuedConnection);
|
||||
connect(d->m_qmlEngine->stackHandler(), SIGNAL(stackChanged()),
|
||||
d, SLOT(qmlStackChanged()), Qt::QueuedConnection);
|
||||
connect(d->m_cppEngine, SIGNAL(stackFrameCompleted()), this, SIGNAL(stackFrameCompleted()));
|
||||
connect(d->m_qmlEngine, SIGNAL(stackFrameCompleted()), this, SIGNAL(stackFrameCompleted()));
|
||||
}
|
||||
|
||||
QmlCppEngine::~QmlCppEngine()
|
||||
@@ -198,10 +160,8 @@ void QmlCppEngine::activateFrame(int index)
|
||||
if (state() != InferiorStopOk && state() != InferiorUnrunnable)
|
||||
return;
|
||||
|
||||
if (index >= d->m_stackBoundary)
|
||||
d->m_qmlEngine->activateFrame(index - d->m_stackBoundary);
|
||||
else
|
||||
d->m_cppEngine->activateFrame(index);
|
||||
d->m_activeEngine->activateFrame(index);
|
||||
|
||||
stackHandler()->setCurrentIndex(index);
|
||||
}
|
||||
|
||||
@@ -451,7 +411,6 @@ void QmlCppEngine::setupEngine()
|
||||
{
|
||||
EDEBUG("\nMASTER SETUP ENGINE");
|
||||
d->m_activeEngine = d->m_cppEngine;
|
||||
d->m_stackBoundary = 0;
|
||||
d->m_qmlEngine->setupSlaveEngine();
|
||||
d->m_cppEngine->setupSlaveEngine();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user