void MainWindow::replayTrace(bool dumpState, bool dumpThumbnails) { if (m_trace->fileName().isEmpty()) { return; } m_retracer->setFileName(m_trace->fileName()); m_retracer->setAPI(m_api); m_retracer->setCaptureState(dumpState); m_retracer->setCaptureThumbnails(dumpThumbnails); if (m_retracer->captureState() && 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->isEmpty()) { //XXX i guess we could still get the current state qDebug()<<"tried to get a state for an empty frame"; return; } index = frame->lastCallIndex(); } else { qDebug()<<"Unknown event type"; return; } m_retracer->setCaptureAtCallNumber(index); } m_retracer->start(); m_ui.actionStop->setEnabled(true); m_progressBar->show(); if (dumpState || dumpThumbnails) { if (dumpState && dumpThumbnails) { statusBar()->showMessage( tr("Looking up the state and capturing thumbnails...")); } else if (dumpState) { statusBar()->showMessage( tr("Looking up the state...")); } else if (dumpThumbnails) { statusBar()->showMessage( tr("Capturing thumbnails...")); } } else if (m_retracer->isProfiling()) { statusBar()->showMessage( tr("Profiling draw calls in trace file...")); } else { statusBar()->showMessage( tr("Replaying the trace file...")); } }
void MainWindow::trimEvent() { int trimIndex; if (m_trimEvent->type() == ApiTraceEvent::Call) { ApiTraceCall *call = static_cast<ApiTraceCall*>(m_trimEvent); trimIndex = call->index(); } else if (m_trimEvent->type() == ApiTraceEvent::Frame) { ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(m_trimEvent); const QList<ApiTraceFrame*> frames = m_trace->frames(); trimIndex = frame->lastCallIndex(); } m_trimProcess->setTracePath(m_trace->fileName()); m_trimProcess->setTrimIndex(trimIndex); m_trimProcess->start(); }