From: Zack Rusin Date: Fri, 1 Apr 2011 03:58:07 +0000 (-0400) Subject: Allow filling state for frames and calls. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=581e3ff87bd15a05976f6a8713e62c074a624260;p=apitrace Allow filling state for frames and calls. --- diff --git a/gui/apitracecall.cpp b/gui/apitracecall.cpp index dd05eee..a7685dc 100644 --- a/gui/apitracecall.cpp +++ b/gui/apitracecall.cpp @@ -367,3 +367,13 @@ ApiTraceEvent::ApiTraceEvent(Type t) ApiTraceCall::~ApiTraceCall() { } + +QVariantMap ApiTraceEvent::state() const +{ + return m_state; +} + +void ApiTraceEvent::setState(const QVariantMap &state) +{ + m_state = state; +} diff --git a/gui/apitracecall.h b/gui/apitracecall.h index f5c734a..c69a484 100644 --- a/gui/apitracecall.h +++ b/gui/apitracecall.h @@ -117,8 +117,12 @@ public: virtual QStaticText staticText() const = 0; virtual int numChildren() const = 0; + QVariantMap state() const; + void setState(const QVariantMap &state); + protected: Type m_type; + QVariantMap m_state; }; Q_DECLARE_METATYPE(ApiTraceEvent*); @@ -153,8 +157,6 @@ public: int number; QList calls; - QVariantMap state; - int numChildren() const; QStaticText staticText() const; private: diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 8a23ea3..6ba7f40 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -23,8 +23,8 @@ MainWindow::MainWindow() : QMainWindow(), m_replayProcess(0), - m_currentFrame(0), - m_stateFrame(0), + m_selectedEvent(0), + m_stateEvent(0), m_findingState(false), m_jsonParser(new QJson::Parser()) { @@ -108,12 +108,12 @@ void MainWindow::callItemSelected(const QModelIndex &index) if (call) { m_ui.detailsWebView->setHtml(call->toHtml()); m_ui.detailsDock->show(); - m_currentFrame = call->parentFrame; + m_selectedEvent = call; } else { - m_currentFrame = index.data().value(); + m_selectedEvent = index.data().value(); m_ui.detailsDock->hide(); } - if (m_currentFrame && !m_currentFrame->state.isEmpty()) { + if (m_selectedEvent && !m_selectedEvent->state().isEmpty()) { fillStateForFrame(); } else m_ui.stateDock->hide(); @@ -175,7 +175,7 @@ void MainWindow::replayFinished() } else if (output.length() < 80) { statusBar()->showMessage(output); } - m_stateFrame = 0; + m_stateEvent = 0; m_findingState = false; } @@ -185,7 +185,7 @@ void MainWindow::replayError(QProcess::ProcessError err) m_ui.actionReplay->setEnabled(true); m_ui.actionLookupState->setEnabled(true); m_findingState = false; - m_stateFrame = 0; + m_stateEvent = 0; qDebug()<<"Process error = "<calls.first()->index; + } else { + qDebug()<<"Unknown event type"; + return; + } arguments << QLatin1String("-D"); - arguments << QString::number(m_currentFrame->calls.first()->index); + arguments << QString::number(index); } arguments << m_traceFileName; @@ -257,13 +272,13 @@ void MainWindow::replayTrace(bool dumpState) void MainWindow::lookupState() { - if (!m_currentFrame) { + if (!m_selectedEvent) { QMessageBox::warning( - this, tr("Unknown Frame"), - tr("To inspect the state select a frame in the trace.")); + this, tr("Unknown Event"), + tr("To inspect the state select an event in the event list.")); return; } - m_stateFrame = m_currentFrame; + m_stateEvent = m_selectedEvent; m_findingState = true; replayTrace(true); } @@ -277,9 +292,8 @@ void MainWindow::parseState(const QVariantMap ¶ms) { QVariantMap::const_iterator itr; - m_stateFrame->state.clear(); - m_stateFrame->state = params; - if (m_currentFrame == m_stateFrame) { + m_stateEvent->setState(params); + if (m_selectedEvent == m_stateEvent) { fillStateForFrame(); } else { m_ui.stateDock->hide(); @@ -313,11 +327,11 @@ void MainWindow::fillStateForFrame() QVariantMap::const_iterator itr; QVariantMap params; - if (!m_currentFrame || m_currentFrame->state.isEmpty()) + if (!m_selectedEvent || m_selectedEvent->state().isEmpty()) return; m_ui.stateTreeWidget->clear(); - params = m_currentFrame->state; + params = m_selectedEvent->state(); QList items; for (itr = params.constBegin(); itr != params.constEnd(); ++itr) { QString key = itr.key(); diff --git a/gui/mainwindow.h b/gui/mainwindow.h index 9fbd7a8..0f8e215 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -7,9 +7,10 @@ #include class ApiTrace; +class ApiTraceEvent; +class ApiTraceFilter; class ApiTraceFrame; class ApiTraceModel; -class ApiTraceFilter; class QLineEdit; class QModelIndex; class QProcess; @@ -60,9 +61,9 @@ private: QString m_traceFileName; - ApiTraceFrame *m_currentFrame; + ApiTraceEvent *m_selectedEvent; - ApiTraceFrame *m_stateFrame; + ApiTraceEvent *m_stateEvent; bool m_findingState; QJson::Parser *m_jsonParser;