4 #include "apitracecall.h"
13 class ApiTrace : public QObject
18 FrameMarker_SwapBuffers,
24 SearchResult_NotFound,
28 struct SearchRequest {
36 SearchRequest(Direction dir,
40 Qt::CaseSensitivity caseSens)
51 Qt::CaseSensitivity cs;
54 static bool isCallAFrameMarker(const ApiTraceCall *call,
62 QString fileName() const;
64 FrameMarker frameMarker() const;
66 ApiTraceState defaultState() const;
68 ApiTraceCall *callWithIndex(int idx) const;
70 const QList<ApiTraceFrame*> & frames() const;
71 ApiTraceFrame *frameAt(int idx) const;
72 int numFrames() const;
73 int numCallsInFrame(int idx) const;
75 void callEdited(ApiTraceCall *call);
76 void callReverted(ApiTraceCall *call);
77 void callError(ApiTraceCall *call);
80 bool needsSaving() const;
82 bool isSaving() const;
84 bool hasErrors() const;
87 void setFileName(const QString &name);
89 void loadFrame(ApiTraceFrame *frame);
90 void findNext(ApiTraceFrame *frame,
93 Qt::CaseSensitivity sensitivity);
94 void findPrev(ApiTraceFrame *frame,
97 Qt::CaseSensitivity sensitivity);
98 void findFrameStart(ApiTraceFrame *frame);
99 void findFrameEnd(ApiTraceFrame *frame);
100 void findCallIndex(int index);
101 void setCallError(const ApiTraceError &error);
103 void bindThumbnailsToFrames(const QList<QImage> &thumbnails);
106 void loadTrace(const QString &name);
107 void requestFrame(ApiTraceFrame *frame);
108 void startedLoadingTrace();
109 void loaded(int percent);
110 void finishedLoadingTrace();
112 void framesInvalidated();
113 void changed(ApiTraceEvent *event);
114 void startedSaving();
116 void findResult(const ApiTrace::SearchRequest &request,
117 ApiTrace::SearchResult result,
120 void beginAddingFrames(int oldCount, int numAdded);
121 void endAddingFrames();
122 void beginLoadingFrame(ApiTraceFrame *frame, int numAdded);
123 void endLoadingFrame(ApiTraceFrame *frame);
124 void foundFrameStart(ApiTraceFrame *frame);
125 void foundFrameEnd(ApiTraceFrame *frame);
126 void foundCallIndex(ApiTraceCall *call);
129 void loaderSearch(const ApiTrace::SearchRequest &request);
130 void loaderFindFrameStart(ApiTraceFrame *frame);
131 void loaderFindFrameEnd(ApiTraceFrame *frame);
132 void loaderFindCallIndex(int index);
135 void addFrames(const QList<ApiTraceFrame*> &frames);
137 void finishedParsing();
138 void loaderFrameLoaded(ApiTraceFrame *frame,
139 const QVector<ApiTraceCall*> &calls,
140 quint64 binaryDataSize);
141 void loaderSearchResult(const ApiTrace::SearchRequest &request,
142 ApiTrace::SearchResult result,
146 int callInFrame(int callIdx) const;
147 bool isFrameLoading(ApiTraceFrame *frame) const;
150 QString m_tempFileName;
152 QList<ApiTraceFrame*> m_frames;
154 FrameMarker m_frameMarker;
156 TraceLoader *m_loader;
157 QThread *m_loaderThread;
158 SaverThread *m_saver;
160 QSet<ApiTraceCall*> m_editedCalls;
164 QSet<ApiTraceCall*> m_errors;
165 QList< QPair<ApiTraceFrame*, ApiTraceError> > m_queuedErrors;
166 QSet<ApiTraceFrame*> m_loadingFrames;