From 99f84fa0e278f4ca30577c22ede85c643c6017cc Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Mon, 19 Sep 2011 23:44:25 -0400 Subject: [PATCH] If a frame has already been loaded don't do it again. In particular for searching we kept reloading frames over and over again. --- gui/traceloader.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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); } -- 2.45.2