]> git.cworth.org Git - apitrace/commitdiff
If a frame has already been loaded don't do it again.
authorZack Rusin <zack@kde.org>
Tue, 20 Sep 2011 03:44:25 +0000 (23:44 -0400)
committerZack Rusin <zack@kde.org>
Tue, 20 Sep 2011 03:44:25 +0000 (23:44 -0400)
In particular for searching we kept reloading frames over and
over again.

gui/traceloader.cpp

index 108d220e0a642654c6084c8920d3db2191fc6922..487fb1ead77d8d066a62bcd0880e154ef65475e4 100644 (file)
@@ -407,6 +407,11 @@ QVector<ApiTraceCall*>
 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);
 }