+void RetraceProcess::replayError(QProcess::ProcessError err)
+{
+ qDebug()<<"Process error = "<<err;
+ qDebug()<<"\terr = "<<m_process->readAllStandardError();
+ qDebug()<<"\tout = "<<m_process->readAllStandardOutput();
+
+ emit error(
+ tr("Couldn't execute the replay file '%1'").arg(m_fileName));
+}
+
+Q_DECLARE_METATYPE(QList<RetraceError>);
+RetraceProcess::RetraceProcess(QObject *parent)
+ : QObject(parent)
+{
+ m_process = new QProcess(this);
+ m_jsonParser = new QJson::Parser();
+
+ qRegisterMetaType<QList<RetraceError> >();
+
+ connect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)),
+ this, SLOT(replayFinished()));
+ connect(m_process, SIGNAL(error(QProcess::ProcessError)),
+ this, SLOT(replayError(QProcess::ProcessError)));
+}
+
+QProcess * RetraceProcess::process() const
+{
+ return m_process;
+}
+
+QString RetraceProcess::fileName() const
+{
+ return m_fileName;
+}
+
+void RetraceProcess::setFileName(const QString &name)
+{
+ m_fileName = name;
+}
+
+bool RetraceProcess::isBenchmarking() const
+{
+ return m_benchmarking;
+}
+
+void RetraceProcess::setBenchmarking(bool bench)
+{
+ m_benchmarking = bench;
+}
+
+bool RetraceProcess::isDoubleBuffered() const
+{
+ return m_doubleBuffered;
+}
+
+void RetraceProcess::setDoubleBuffered(bool db)
+{
+ m_doubleBuffered = db;
+}
+
+void RetraceProcess::setCaptureAtCallNumber(qlonglong num)