]> git.cworth.org Git - apitrace/blobdiff - gui/traceloader.cpp
Remove some extra debugging output.
[apitrace] / gui / traceloader.cpp
index 41d4a9bebe6b736ca5dd30039c365cbed60240c0..0fee815ff6a811bbac9a58e9099453de6aa71fa5 100644 (file)
@@ -28,6 +28,8 @@ TraceLoader::TraceLoader(QObject *parent)
 TraceLoader::~TraceLoader()
 {
     m_parser.close();
+    qDeleteAll(m_signatures);
+    qDeleteAll(m_enumSignatures);
 }
 
 void TraceLoader::loadTrace(const QString &filename)
@@ -40,10 +42,9 @@ void TraceLoader::loadTrace(const QString &filename)
         qDebug() << "error: failed to open " << filename;
         return;
     }
-    qDebug()<<"load trace with "<<filename;
+
     emit startedParsing();
 
-    qDebug() <<"\t support offsets = "<<m_parser.supportsOffsets();
     if (m_parser.supportsOffsets()) {
         scanTrace();
     } else {
@@ -144,6 +145,7 @@ void TraceLoader::scanTrace()
             currentFrame = new ApiTraceFrame();
             currentFrame->number = numOfFrames;
             currentFrame->setNumChildren(numOfCalls);
+            currentFrame->setLastCallIndex(call->no);
             frames.append(currentFrame);
 
             m_createdFrames.append(currentFrame);
@@ -290,7 +292,7 @@ void TraceLoader::searchNext(int startFrame,
                         fetchFrameContents(frame);
                 for (int i = 0; i < calls.count(); ++i) {
                     if (calls[i]->index() == call->no) {
-                        emit searchResult(ApiTrace::SearchFound, calls[i]);
+                        emit searchResult(ApiTrace::SearchResult_Found, calls[i]);
                         break;
                     }
                 }
@@ -301,7 +303,7 @@ void TraceLoader::searchNext(int startFrame,
             delete call;
         }
     }
-    emit searchResult(ApiTrace::SearchNotFound, 0);
+    emit searchResult(ApiTrace::SearchResult_NotFound, 0);
 }
 
 void TraceLoader::searchPrev(int startFrame,
@@ -345,7 +347,7 @@ void TraceLoader::searchPrev(int startFrame,
             }
         }
     }
-    emit searchResult(ApiTrace::SearchNotFound, 0);
+    emit searchResult(ApiTrace::SearchResult_NotFound, 0);
 }
 
 bool TraceLoader::searchCallsBackwards(const QList<Trace::Call*> &calls,
@@ -361,7 +363,7 @@ bool TraceLoader::searchCallsBackwards(const QList<Trace::Call*> &calls,
                     fetchFrameContents(frame);
             for (int i = 0; i < apiCalls.count(); ++i) {
                 if (apiCalls[i]->index() == call->no) {
-                    emit searchResult(ApiTrace::SearchFound, apiCalls[i]);
+                    emit searchResult(ApiTrace::SearchResult_Found, apiCalls[i]);
                     break;
                 }
             }
@@ -406,6 +408,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);
@@ -454,4 +461,36 @@ TraceLoader::fetchFrameContents(ApiTraceFrame *currentFrame)
     return QVector<ApiTraceCall*>();
 }
 
+void TraceLoader::findFrameStart(ApiTraceFrame *frame)
+{
+    if (!frame->isLoaded()) {
+        loadFrame(frame);
+    }
+    emit foundFrameStart(frame);
+}
+
+void TraceLoader::findFrameEnd(ApiTraceFrame *frame)
+{
+    if (!frame->isLoaded()) {
+        loadFrame(frame);
+    }
+    emit foundFrameEnd(frame);
+}
+
+void TraceLoader::findCallIndex(int index)
+{
+    int frameIdx = callInFrame(index);
+    ApiTraceFrame *frame = m_createdFrames[frameIdx];
+    QVector<ApiTraceCall*> calls = fetchFrameContents(frame);
+    QVector<ApiTraceCall*>::const_iterator itr;
+    ApiTraceCall *call = 0;
+    for (itr = calls.constBegin(); itr != calls.constEnd(); ++itr) {
+        if ((*itr)->index() == index) {
+            call = *itr;
+        }
+    }
+    Q_ASSERT(call);
+    emit foundCallIndex(call);
+}
+
 #include "traceloader.moc"