From 9e292fc0023217f8fdaab168790aeca880e81e65 Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Tue, 26 Apr 2011 23:03:42 -0400 Subject: [PATCH] Show the size of binary data uploaded in a frame. By default only mark frames that make the gpu download more than 1MB in the listview, for all others just show the size in the tooltip. --- gui/apitracecall.cpp | 31 +++++++++++++++++++++++++++++-- gui/apitracecall.h | 1 + gui/apitracemodel.cpp | 14 +++++++++++--- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/gui/apitracecall.cpp b/gui/apitracecall.cpp index 5901811..e265705 100644 --- a/gui/apitracecall.cpp +++ b/gui/apitracecall.cpp @@ -4,6 +4,7 @@ #include "trace_model.hpp" #include +#include #include #define QT_USE_FAST_OPERATOR_PLUS #include @@ -495,8 +496,24 @@ QStaticText ApiTraceFrame::staticText() const if (m_staticText && !m_staticText->text().isEmpty()) return *m_staticText; - QString richText = - QString::fromLatin1("Frame %1").arg(number); + QString richText; + + //mark the frame if it uploads more than a meg a frame + if (m_binaryDataSize > (1024*1024)) { + richText = + QObject::tr( + "" + "Frame %1" + "" + "    (%2MB)") + .arg(number) + .arg(double(m_binaryDataSize / (1024.*1024.)), 0, 'g', 2); + } else { + richText = + QObject::tr( + "Frame %1") + .arg(number); + } if (!m_staticText) m_staticText = new QStaticText(richText); @@ -898,6 +915,11 @@ ApiTrace * ApiTraceCall::parentTrace() const void ApiTraceFrame::addCall(ApiTraceCall *call) { m_calls.append(call); + if (call->hasBinaryData()) { + QByteArray data = + call->arguments()[call->binaryDataIndex()].toByteArray(); + m_binaryDataSize += data.size(); + } } QList ApiTraceFrame::calls() const @@ -920,3 +942,8 @@ bool ApiTraceFrame::isEmpty() const return m_calls.isEmpty(); } +int ApiTraceFrame::binaryDataSize() const +{ + return m_binaryDataSize; +} + diff --git a/gui/apitracecall.h b/gui/apitracecall.h index d8005ca..b7362eb 100644 --- a/gui/apitracecall.h +++ b/gui/apitracecall.h @@ -253,6 +253,7 @@ public: void addCall(ApiTraceCall *call); QList calls() const; + int binaryDataSize() const; private: ApiTrace *m_parentTrace; quint64 m_binaryDataSize; diff --git a/gui/apitracemodel.cpp b/gui/apitracemodel.cpp index 7366ae5..e60b176 100644 --- a/gui/apitracemodel.cpp +++ b/gui/apitracemodel.cpp @@ -53,12 +53,20 @@ QVariant ApiTraceModel::data(const QModelIndex &index, int role) const .arg(stateText); } else { ApiTraceFrame *frame = static_cast(itm); - QString text = frame->staticText().text(); + QString text = QObject::tr("%1) Frame ") + .arg(frame->number); + int binaryDataSize = frame->binaryDataSize() / 1024; if (frame->state().isEmpty()) - return QString::fromLatin1("%1").arg(text); + return QObject::tr( + "%1 (binary data size = %2kB)") + .arg(text) + .arg(binaryDataSize); else - return QString::fromLatin1("%1
%2") + return QObject::tr( + "%1 (binary data size = %2kB)" + "
%3") .arg(text) + .arg(binaryDataSize) .arg(stateText); } } -- 2.43.0