X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=gui%2Fapitrace.h;h=f3505258138f62fafc4f733aec72a052197e6f8f;hb=5cd8d99d53ac546527a9011f3dd64d46ce590245;hp=5cd3fe736f990e053946e97a5e3caf8ef1244a86;hpb=c17434303f411267d325f5218e0394e722079402;p=apitrace diff --git a/gui/apitrace.h b/gui/apitrace.h index 5cd3fe7..f350525 100644 --- a/gui/apitrace.h +++ b/gui/apitrace.h @@ -14,20 +14,37 @@ class ApiTrace : public QObject { Q_OBJECT public: - enum FrameMarker { - FrameMarker_SwapBuffers, - FrameMarker_Flush, - FrameMarker_Finish, - FrameMarker_Clear - }; enum SearchResult { - SearchNotFound, - SearchFound, - SearchWrapped + SearchResult_NotFound, + SearchResult_Found, + SearchResult_Wrapped + }; + struct SearchRequest { + enum Direction { + Next, + Prev + }; + SearchRequest() + : direction(Next) + {} + SearchRequest(Direction dir, + ApiTraceFrame *f, + ApiTraceCall *call, + QString str, + Qt::CaseSensitivity caseSens) + : direction(dir), + frame(f), + from(call), + text(str), + cs(caseSens) + {} + Direction direction; + ApiTraceFrame *frame; + ApiTraceCall *from; + QString text; + Qt::CaseSensitivity cs; }; - static bool isCallAFrameMarker(const ApiTraceCall *call, - FrameMarker marker); public: ApiTrace(); ~ApiTrace(); @@ -36,13 +53,11 @@ public: QString fileName() const; - FrameMarker frameMarker() const; - ApiTraceState defaultState() const; ApiTraceCall *callWithIndex(int idx) const; - QList frames() const; + const QList & frames() const; ApiTraceFrame *frameAt(int idx) const; int numFrames() const; int numCallsInFrame(int idx) const; @@ -73,7 +88,9 @@ public slots: void findFrameStart(ApiTraceFrame *frame); void findFrameEnd(ApiTraceFrame *frame); void findCallIndex(int index); + void setCallError(const ApiTraceError &error); + void bindThumbnailsToFrames(const QList &thumbnails); signals: void loadTrace(const QString &name); @@ -83,10 +100,11 @@ signals: void finishedLoadingTrace(); void invalidated(); void framesInvalidated(); - void changed(ApiTraceCall *call); + void changed(ApiTraceEvent *event); void startedSaving(); void saved(); - void findResult(ApiTrace::SearchResult result, + void findResult(const ApiTrace::SearchRequest &request, + ApiTrace::SearchResult result, ApiTraceCall *call); void beginAddingFrames(int oldCount, int numAdded); @@ -98,12 +116,7 @@ signals: void foundCallIndex(ApiTraceCall *call); signals: - void loaderSearchNext(int startFrame, - const QString &str, - Qt::CaseSensitivity sensitivity); - void loaderSearchPrev(int startFrame, - const QString &str, - Qt::CaseSensitivity sensitivity); + void loaderSearch(const ApiTrace::SearchRequest &request); void loaderFindFrameStart(ApiTraceFrame *frame); void loaderFindFrameEnd(ApiTraceFrame *frame); void loaderFindCallIndex(int index); @@ -115,19 +128,18 @@ private slots: void loaderFrameLoaded(ApiTraceFrame *frame, const QVector &calls, quint64 binaryDataSize); - void loaderSearchResult(ApiTrace::SearchResult result, + void loaderSearchResult(const ApiTrace::SearchRequest &request, + ApiTrace::SearchResult result, ApiTraceCall *call); private: int callInFrame(int callIdx) const; + bool isFrameLoading(ApiTraceFrame *frame) const; private: QString m_fileName; QString m_tempFileName; QList m_frames; - QVector m_calls; - - FrameMarker m_frameMarker; TraceLoader *m_loader; QThread *m_loaderThread; @@ -138,6 +150,8 @@ private: bool m_needsSaving; QSet m_errors; + QList< QPair > m_queuedErrors; + QSet m_loadingFrames; }; #endif