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())
{
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<ApiTraceFrame*>();
+ m_selectedEvent = index.data().value<ApiTraceFrame*>();
m_ui.detailsDock->hide();
}
- if (m_currentFrame && !m_currentFrame->state.isEmpty()) {
+ if (m_selectedEvent && !m_selectedEvent->state().isEmpty()) {
fillStateForFrame();
} else
m_ui.stateDock->hide();
} else if (output.length() < 80) {
statusBar()->showMessage(output);
}
- m_stateFrame = 0;
+ m_stateEvent = 0;
m_findingState = false;
}
m_ui.actionReplay->setEnabled(true);
m_ui.actionLookupState->setEnabled(true);
m_findingState = false;
- m_stateFrame = 0;
+ m_stateEvent = 0;
qDebug()<<"Process error = "<<err;
qDebug()<<"\terr = "<<m_replayProcess->readAllStandardError();
QStringList arguments;
if (dumpState &&
- m_currentFrame && !m_currentFrame->calls.isEmpty()) {
+ m_selectedEvent) {
+ int index = 0;
+ if (m_selectedEvent->type() == ApiTraceEvent::Call) {
+ index = static_cast<ApiTraceCall*>(m_selectedEvent)->index;
+ } else if (m_selectedEvent->type() == ApiTraceEvent::Frame) {
+ ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(m_selectedEvent);
+ if (frame->calls.isEmpty()) {
+ //XXX i guess we could still get the current state
+ qDebug()<<"tried to get a state for an empty frame";
+ return;
+ }
+ index = frame->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;
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);
}
{
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();
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<QTreeWidgetItem *> items;
for (itr = params.constBegin(); itr != params.constEnd(); ++itr) {
QString key = itr.key();