]> git.cworth.org Git - apitrace/blobdiff - gui/apitrace.cpp
shave a few more megs by sizing trace call list correctly
[apitrace] / gui / apitrace.cpp
index 643876e508d82efcbc18e687dafd8dc505e34b3d..f3b95dc13c58e979e05b59da1998318da0dec5f9 100644 (file)
@@ -41,7 +41,8 @@ bool ApiTrace::isCallAFrameMarker(const ApiTraceCall *call,
     switch (marker) {
     case FrameMarker_SwapBuffers:
         return call->name().contains(QLatin1String("SwapBuffers")) ||
-               call->name() == QLatin1String("CGLFlushDrawable");
+               call->name() == QLatin1String("CGLFlushDrawable") ||
+               call->name() == QLatin1String("glFrameTerminatorGREMEDY");
     case FrameMarker_Flush:
         return call->name() == QLatin1String("glFlush");
     case FrameMarker_Finish:
@@ -145,6 +146,7 @@ void ApiTrace::setFrameMarker(FrameMarker marker)
 
 void ApiTrace::addFrames(const QList<ApiTraceFrame*> &frames)
 {
+    QList<ApiTraceCall*> calls;
     int currentFrames = m_frames.count();
     int numNewFrames = frames.count();
 
@@ -155,10 +157,12 @@ void ApiTrace::addFrames(const QList<ApiTraceFrame*> &frames)
     int currentCalls = m_calls.count();
     int numNewCalls = 0;
     foreach(ApiTraceFrame *frame, frames) {
-        frame->setParentTrace(this);
+        Q_ASSERT(this == frame->parentTrace());
         numNewCalls += frame->numChildren();
-        m_calls += frame->calls();
+        calls += frame->calls();
     }
+    m_calls.reserve(m_calls.count() + calls.count());
+    m_calls += calls;
 
     emit endAddingFrames();
     emit callsAdded(currentCalls, numNewCalls);
@@ -174,8 +178,7 @@ void ApiTrace::detectFrames()
     ApiTraceFrame *currentFrame = 0;
     foreach(ApiTraceCall *apiCall, m_calls) {
         if (!currentFrame) {
-            currentFrame = new ApiTraceFrame();
-            currentFrame->setParentTrace(this);
+            currentFrame = new ApiTraceFrame(this);
             currentFrame->number = m_frames.count();
         }
         apiCall->setParentFrame(currentFrame);
@@ -286,4 +289,14 @@ bool ApiTrace::hasErrors() const
     return !m_errors.isEmpty();
 }
 
+ApiTraceCallSignature * ApiTrace::signature(const QString &callName)
+{
+    return m_signatures[callName];
+}
+
+void ApiTrace::addSignature(ApiTraceCallSignature *signature)
+{
+    m_signatures.insert(signature->name(), signature);
+}
+
 #include "apitrace.moc"