switch (marker) {
case FrameMarker_SwapBuffers:
- return call->name().contains(QLatin1String("SwapBuffers"));
+ return call->name().contains(QLatin1String("SwapBuffers")) ||
+ call->name() == QLatin1String("CGLFlushDrawable") ||
+ call->name() == QLatin1String("glFrameTerminatorGREMEDY");
case FrameMarker_Flush:
return call->name() == QLatin1String("glFlush");
case FrameMarker_Finish:
{
const ApiTraceFrame *frame = frameAt(idx);
if (frame)
- return frame->calls.count();
+ return frame->numChildren();
else
return 0;
}
void ApiTrace::addFrames(const QList<ApiTraceFrame*> &frames)
{
+ QList<ApiTraceCall*> calls;
int currentFrames = m_frames.count();
int numNewFrames = frames.count();
int currentCalls = m_calls.count();
int numNewCalls = 0;
foreach(ApiTraceFrame *frame, frames) {
- frame->setParentTrace(this);
- numNewCalls += frame->calls.count();
- m_calls += frame->calls;
+ Q_ASSERT(this == frame->parentTrace());
+ numNewCalls += frame->numChildren();
+ calls += frame->calls();
}
+ m_calls.reserve(m_calls.count() + calls.count());
+ m_calls += calls;
emit endAddingFrames();
emit callsAdded(currentCalls, numNewCalls);
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);
- currentFrame->calls.append(apiCall);
+ currentFrame->addCall(apiCall);
if (ApiTrace::isCallAFrameMarker(apiCall,
m_frameMarker)) {
m_frames.append(currentFrame);
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"