X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Floaderthread.cpp;h=f311fe0d3e33f52e19bfcc1c471d8666a809d953;hb=4d0ef5d3d040704f61e0814c9260c1a2ca11c24d;hp=054545333b37f5d7e7652d4103815581c4da80eb;hpb=034ca3f55a9c40e7011c86af6e68642a371d1093;p=apitrace diff --git a/gui/loaderthread.cpp b/gui/loaderthread.cpp index 0545453..f311fe0 100644 --- a/gui/loaderthread.cpp +++ b/gui/loaderthread.cpp @@ -55,6 +55,8 @@ void LoaderThread::run() file.close(); Trace::Parser p; + QVector calls; + quint64 binaryDataSize = 0; if (p.open(m_fileName.toLatin1().constData())) { Trace::Call *call = p.parse_call(); while (call) { @@ -66,11 +68,20 @@ void LoaderThread::run() } ApiTraceCall *apiCall = apiCallFromTraceCall(call, helpHash, currentFrame); - currentFrame->addCall(apiCall); + calls.append(apiCall); + if (apiCall->hasBinaryData()) { + QByteArray data = + apiCall->arguments()[apiCall->binaryDataIndex()].toByteArray(); + binaryDataSize += data.size(); + } if (ApiTrace::isCallAFrameMarker(apiCall, m_frameMarker)) { + calls.squeeze(); + currentFrame->setCalls(calls, binaryDataSize); + calls.clear(); frames.append(currentFrame); currentFrame = 0; + binaryDataSize = 0; if (frames.count() >= FRAMES_TO_CACHE) { emit parsedFrames(frames); frames.clear();