From: Zack Rusin Date: Tue, 20 Sep 2011 03:44:25 +0000 (-0400) Subject: If a frame has already been loaded don't do it again. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=99f84fa0e278f4ca30577c22ede85c643c6017cc;p=apitrace If a frame has already been loaded don't do it again. In particular for searching we kept reloading frames over and over again. --- diff --git a/gui/traceloader.cpp b/gui/traceloader.cpp index 108d220..487fb1e 100644 --- a/gui/traceloader.cpp +++ b/gui/traceloader.cpp @@ -407,6 +407,11 @@ QVector TraceLoader::fetchFrameContents(ApiTraceFrame *currentFrame) { Q_ASSERT(currentFrame); + + if (currentFrame->isLoaded) { + return currentFrame->calls(); + } + if (m_parser.supportsOffsets()) { unsigned frameIdx = currentFrame->number; int numOfCalls = numberOfCallsInFrame(frameIdx); @@ -457,13 +462,17 @@ TraceLoader::fetchFrameContents(ApiTraceFrame *currentFrame) void TraceLoader::findFrameStart(ApiTraceFrame *frame) { - loadFrame(frame); + if (!frame->isLoaded()) { + loadFrame(frame); + } emit foundFrameStart(frame); } void TraceLoader::findFrameEnd(ApiTraceFrame *frame) { - loadFrame(frame); + if (!frame->isLoaded()) { + loadFrame(frame); + } emit foundFrameEnd(frame); }