]> git.cworth.org Git - apitrace/blobdiff - gui/apitrace.cpp
Fix a silly mistake.
[apitrace] / gui / apitrace.cpp
index 643876e508d82efcbc18e687dafd8dc505e34b3d..8b2eeecaa4b8115f51d6578b5041ca0a86759d57 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);
@@ -209,10 +212,10 @@ ApiTraceCall * ApiTrace::callWithIndex(int idx) const
 ApiTraceState ApiTrace::defaultState() const
 {
     ApiTraceFrame *frame = frameAt(0);
-    if (!frame)
+    if (!frame || !frame->hasState())
         return ApiTraceState();
 
-    return frame->state();
+    return *frame->state();
 }
 
 void ApiTrace::callEdited(ApiTraceCall *call)
@@ -286,4 +289,34 @@ bool ApiTrace::hasErrors() const
     return !m_errors.isEmpty();
 }
 
+ApiTraceCallSignature * ApiTrace::signature(unsigned id)
+{
+    if (id >= m_signatures.count()) {
+        m_signatures.resize(id + 1);
+        return NULL;
+    } else {
+        return m_signatures[id];
+    }
+}
+
+void ApiTrace::addSignature(unsigned id, ApiTraceCallSignature *signature)
+{
+    m_signatures[id] = signature;
+}
+
+ApiTraceEnumSignature * ApiTrace::enumSignature(unsigned id)
+{
+    if (id >= m_enumSignatures.count()) {
+        m_enumSignatures.resize(id + 1);
+        return NULL;
+    } else {
+        return m_enumSignatures[id];
+    }
+}
+
+void ApiTrace::addEnumSignature(unsigned id, ApiTraceEnumSignature *signature)
+{
+    m_enumSignatures[id] = signature;
+}
+
 #include "apitrace.moc"