X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Ftraceloader.cpp;h=2ad32b1fb4d73523dc4219650ee5ac6cd93a85d6;hb=7a9fb5103e052150232b64cb5d99374cda3f1234;hp=0e6ed47351260a8d35e1998cc9728423cff7102f;hpb=6bfa32f560b5d299ad9cdeb6bbbabf6497750c9f;p=apitrace diff --git a/gui/traceloader.cpp b/gui/traceloader.cpp index 0e6ed47..2ad32b1 100644 --- a/gui/traceloader.cpp +++ b/gui/traceloader.cpp @@ -20,8 +20,7 @@ apiCallFromTraceCall(const trace::Call *call, } TraceLoader::TraceLoader(QObject *parent) - : QObject(parent), - m_frameMarker(ApiTrace::FrameMarker_SwapBuffers) + : QObject(parent) { } @@ -61,6 +60,7 @@ void TraceLoader::loadTrace(const QString &filename) //Load the entire file into memory parseTrace(); } + emit guessedApi(static_cast(m_parser.api)); emit finishedParsing(); } @@ -69,34 +69,6 @@ void TraceLoader::loadFrame(ApiTraceFrame *currentFrame) fetchFrameContents(currentFrame); } -void TraceLoader::setFrameMarker(ApiTrace::FrameMarker marker) -{ - m_frameMarker = marker; -} - -bool TraceLoader::isCallAFrameMarker(const trace::Call *call) const -{ - std::string name = call->name(); - - switch (m_frameMarker) { - case ApiTrace::FrameMarker_SwapBuffers: - return name.find("SwapBuffers") != std::string::npos || - name == "CGLFlushDrawable" || - name == "glFrameTerminatorGREMEDY"; - break; - case ApiTrace::FrameMarker_Flush: - return name == "glFlush"; - break; - case ApiTrace::FrameMarker_Finish: - return name == "glFinish"; - break; - case ApiTrace::FrameMarker_Clear: - return name == "glClear"; - break; - } - return false; -} - int TraceLoader::numberOfFrames() const { return m_frameBookmarks.size(); @@ -147,7 +119,7 @@ void TraceLoader::scanTrace() while ((call = m_parser.scan_call())) { ++numOfCalls; - if (isCallAFrameMarker(call)) { + if (call->flags & trace::CALL_FLAG_END_FRAME) { FrameBookmark frameBookmark(startBookmark); frameBookmark.numberOfCalls = numOfCalls; @@ -217,8 +189,7 @@ void TraceLoader::parseTrace() apiCall->arguments()[apiCall->binaryDataIndex()].toByteArray(); binaryDataSize += data.size(); } - if (ApiTrace::isCallAFrameMarker(apiCall, - m_frameMarker)) { + if (call->flags & trace::CALL_FLAG_END_FRAME) { calls.squeeze(); currentFrame->setCalls(calls, binaryDataSize); calls.clear(); @@ -452,7 +423,7 @@ TraceLoader::fetchFrameContents(ApiTraceFrame *currentFrame) delete call; - if (ApiTrace::isCallAFrameMarker(apiCall, m_frameMarker)) { + if (apiCall->flags() & trace::CALL_FLAG_END_FRAME) { break; }