blob: f1f6811919ba12a970317df4d35b3b4e9038bceb [file] [log] [blame]
Zack Rusinf6667d12011-03-30 11:03:37 -04001#ifndef APITRACE_H
2#define APITRACE_H
3
4#include "apitracecall.h"
5
6#include <QObject>
7
8class LoaderThread;
9
10class ApiTrace : public QObject
11{
12 Q_OBJECT
13public:
14 enum FrameMarker {
15 FrameMarker_SwapBuffers,
16 FrameMarker_Flush,
17 FrameMarker_Finish,
18 FrameMarker_Clear
19 };
20 static bool isCallAFrameMarker(const ApiTraceCall *call,
21 FrameMarker marker);
22public:
23 ApiTrace();
24 ~ApiTrace();
25
26 bool isEmpty() const;
27
28 QString fileName() const;
29
30 FrameMarker frameMarker() const;
31
32 QList<ApiTraceCall*> calls() const;
33 ApiTraceCall *callAt(int idx) const;
Zack Rusinf04cf8a2011-04-12 23:21:52 -040034 ApiTraceCall *callWithIndex(int idx) const;
Zack Rusinf6667d12011-03-30 11:03:37 -040035 int numCalls() const;
36
37 QList<ApiTraceFrame*> frames() const;
38 ApiTraceFrame *frameAt(int idx) const;
39 int numFrames() const;
40 int numCallsInFrame(int idx) const;
41
42public slots:
43 void setFileName(const QString &name);
44 void setFrameMarker(FrameMarker marker);
45
46signals:
Zack Rusinde4ea412011-03-30 11:30:08 -040047 void startedLoadingTrace();
48 void finishedLoadingTrace();
Zack Rusinf6667d12011-03-30 11:03:37 -040049 void invalidated();
50 void framesInvalidated();
51
52 void framesAdded(int oldCount, int numAdded);
53 void callsAdded(int oldCount, int numAdded);
54
55private slots:
56 void addFrames(const QList<ApiTraceFrame*> &frames);
57private:
58 void detectFrames();
59private:
60 QString m_fileName;
61
62 QList<ApiTraceFrame*> m_frames;
63 QList<ApiTraceCall*> m_calls;
64
65 FrameMarker m_frameMarker;
66
67 LoaderThread *m_loader;
68};
69
70#endif