X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitrace.h;h=2833f60cddf90d5063cf7b40d8f951d5b1e0181c;hb=e9426dd61586757d23d7dddc85b3076f477e7f07;hp=bf90d17daf5577a656893726579f4b3049259fe0;hpb=1a9f7af32205d900c88fef0b544546eb0d7c84ee;p=apitrace diff --git a/gui/apitrace.h b/gui/apitrace.h index bf90d17..2833f60 100644 --- a/gui/apitrace.h +++ b/gui/apitrace.h @@ -25,6 +25,31 @@ public: 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); @@ -87,7 +112,8 @@ signals: void changed(ApiTraceCall *call); 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); @@ -99,12 +125,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); @@ -116,17 +137,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; @@ -140,6 +162,7 @@ private: QSet m_errors; QList< QPair > m_queuedErrors; + QSet m_loadingFrames; }; #endif