#include "traceloader.h"
#include "saverthread.h"
+#include <QDebug>
#include <QDir>
#include <QThread>
m_needsSaving(false)
{
m_loader = new TraceLoader();
+
connect(this, SIGNAL(loadTrace(QString)),
m_loader, SLOT(loadTrace(QString)));
+ connect(this, SIGNAL(requestFrame(ApiTraceFrame*)),
+ m_loader, SLOT(loadFrame(ApiTraceFrame*)));
connect(m_loader, SIGNAL(framesLoaded(const QList<ApiTraceFrame*>)),
this, SLOT(addFrames(const QList<ApiTraceFrame*>)));
- connect(m_loader, SIGNAL(frameLoaded(int,QVector<ApiTraceCall*>,quint64)),
- this, SLOT(fillFrame(int,QVector<ApiTraceCall*>,quint64)));
+ connect(m_loader, SIGNAL(frameLoaded(ApiTraceFrame*)),
+ this, SLOT(frameLoadFinished(ApiTraceFrame*)));
+ connect(m_loader, SIGNAL(finishedParsing()),
+ this, SLOT(finishedParsing()));
connect(m_loader, SIGNAL(startedParsing()),
this, SIGNAL(startedLoadingTrace()));
return m_calls;
}
-ApiTraceCall * ApiTrace::callAt(int idx) const
-{
- return m_calls.value(idx);
-}
-
int ApiTrace::numCalls() const
{
return m_calls.count();
return !m_errors.isEmpty();
}
-void ApiTrace::fillFrame(int frameIdx, const QVector<ApiTraceCall *> &calls,
- quint64 binaryDataSize)
+void ApiTrace::loadFrame(ApiTraceFrame *frame)
+{
+ Q_ASSERT(!frame->loaded());
+ emit beginLoadingFrame(frame, frame->numChildrenToLoad());
+ emit requestFrame(frame);
+}
+
+void ApiTrace::finishedParsing()
+{
+ ApiTraceFrame *firstFrame = m_frames[0];
+ if (firstFrame && !firstFrame->loaded()) {
+ loadFrame(firstFrame);
+ }
+}
+
+void ApiTrace::frameLoadFinished(ApiTraceFrame *frame)
{
+ emit endLoadingFrame(frame);
}
#include "apitrace.moc"