in preparation for figuring out the amount of data downloaded by the gpu
in a frame.
{
const ApiTraceFrame *frame = frameAt(idx);
if (frame)
{
const ApiTraceFrame *frame = frameAt(idx);
if (frame)
- return frame->calls.count();
+ return frame->numChildren();
int numNewCalls = 0;
foreach(ApiTraceFrame *frame, frames) {
frame->setParentTrace(this);
int numNewCalls = 0;
foreach(ApiTraceFrame *frame, frames) {
frame->setParentTrace(this);
- numNewCalls += frame->calls.count();
- m_calls += frame->calls;
+ numNewCalls += frame->numChildren();
+ m_calls += frame->calls();
}
emit endAddingFrames();
}
emit endAddingFrames();
currentFrame->number = m_frames.count();
}
apiCall->setParentFrame(currentFrame);
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);
if (ApiTrace::isCallAFrameMarker(apiCall,
m_frameMarker)) {
m_frames.append(currentFrame);
int ApiTraceFrame::numChildren() const
{
int ApiTraceFrame::numChildren() const
{
+ return m_calls.count();
}
ApiTraceFrame::ApiTraceFrame()
: ApiTraceEvent(ApiTraceEvent::Frame),
}
ApiTraceFrame::ApiTraceFrame()
: ApiTraceEvent(ApiTraceEvent::Frame),
+ m_parentTrace(0),
+ m_binaryDataSize(0)
+void ApiTraceFrame::addCall(ApiTraceCall *call)
+{
+ m_calls.append(call);
+}
+
+QList<ApiTraceCall*> ApiTraceFrame::calls() const
+{
+ return m_calls;
+}
+
+ApiTraceCall * ApiTraceFrame::call(int idx) const
+{
+ return m_calls.value(idx);
+}
+
+int ApiTraceFrame::callIndex(ApiTraceCall *call) const
+{
+ return m_calls.indexOf(call);
+}
+
+bool ApiTraceFrame::isEmpty() const
+{
+ return m_calls.isEmpty();
+}
+
public:
ApiTraceFrame();
int number;
public:
ApiTraceFrame();
int number;
- QList<ApiTraceCall*> calls;
+
+ bool isEmpty() const;
ApiTrace *parentTrace() const;
void setParentTrace(ApiTrace *trace);
int numChildren() const;
QStaticText staticText() const;
ApiTrace *parentTrace() const;
void setParentTrace(ApiTrace *trace);
int numChildren() const;
QStaticText staticText() const;
+
+ int callIndex(ApiTraceCall *call) const;
+ ApiTraceCall *call(int idx) const;
+ void addCall(ApiTraceCall *call);
+ QList<ApiTraceCall*> calls() const;
+
private:
ApiTrace *m_parentTrace;
private:
ApiTrace *m_parentTrace;
+ quint64 m_binaryDataSize;
+ QList<ApiTraceCall*> m_calls;
};
Q_DECLARE_METATYPE(ApiTraceFrame*);
};
Q_DECLARE_METATYPE(ApiTraceFrame*);
return QModelIndex();
}
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
return QModelIndex();
}
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
- ApiTraceCall *call = frame->calls.value(row);
+ ApiTraceCall *call = frame->call(row);
if (call)
return createIndex(row, column, call);
else
if (call)
return createIndex(row, column, call);
else
ApiTraceEvent *event = item(parent);
if (event && event->type() == ApiTraceEvent::Frame) {
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
ApiTraceEvent *event = item(parent);
if (event && event->type() == ApiTraceEvent::Frame) {
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
- return !frame->calls.isEmpty();
+ return !frame->isEmpty();
} else
return false;
} else {
} else
return false;
} else {
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
if (frame)
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
if (frame)
- return frame->calls.count();
+ return frame->numChildren();
if (event->type() == ApiTraceEvent::Call) {
ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
ApiTraceFrame *frame = call->parentFrame();
if (event->type() == ApiTraceEvent::Call) {
ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
ApiTraceFrame *frame = call->parentFrame();
- int row = frame->calls.indexOf(call);
+ int row = frame->callIndex(call);
QModelIndex index = createIndex(row, 0, call);
emit dataChanged(index, index);
} else if (event->type() == ApiTraceEvent::Frame) {
QModelIndex index = createIndex(row, 0, call);
emit dataChanged(index, index);
} else if (event->type() == ApiTraceEvent::Frame) {
ApiTraceFrame *frame = call->parentFrame();
Q_ASSERT(frame);
ApiTraceFrame *frame = call->parentFrame();
Q_ASSERT(frame);
- int row = frame->calls.indexOf(call);
+ int row = frame->callIndex(call);
if (row < 0) {
qDebug() << "Couldn't find call num "<<call->index()<<" inside parent!";
return QModelIndex();
if (row < 0) {
qDebug() << "Couldn't find call num "<<call->index()<<" inside parent!";
return QModelIndex();
trace->save();
ApiTraceFrame *frame = call->parentFrame();
trace->save();
ApiTraceFrame *frame = call->parentFrame();
- int row = frame->calls.indexOf(call);
+ int row = frame->callIndex(call);
QModelIndex index = createIndex(row, 0, call);
emit dataChanged(index, index);
}
QModelIndex index = createIndex(row, 0, call);
emit dataChanged(index, index);
}
ApiTraceCall *apiCall =
apiCallFromTraceCall(call, helpHash);
apiCall->setParentFrame(currentFrame);
ApiTraceCall *apiCall =
apiCallFromTraceCall(call, helpHash);
apiCall->setParentFrame(currentFrame);
- currentFrame->calls.append(apiCall);
+ currentFrame->addCall(apiCall);
if (ApiTrace::isCallAFrameMarker(apiCall,
m_frameMarker)) {
frames.append(currentFrame);
if (ApiTrace::isCallAFrameMarker(apiCall,
m_frameMarker)) {
frames.append(currentFrame);
} else if (m_selectedEvent->type() == ApiTraceEvent::Frame) {
ApiTraceFrame *frame =
static_cast<ApiTraceFrame*>(m_selectedEvent);
} else if (m_selectedEvent->type() == ApiTraceEvent::Frame) {
ApiTraceFrame *frame =
static_cast<ApiTraceFrame*>(m_selectedEvent);
- if (frame->calls.isEmpty()) {
+ if (frame->isEmpty()) {
//XXX i guess we could still get the current state
qDebug()<<"tried to get a state for an empty frame";
return;
}
//XXX i guess we could still get the current state
qDebug()<<"tried to get a state for an empty frame";
return;
}
- index = frame->calls.first()->index();
+ index = frame->calls().first()->index();
} else {
qDebug()<<"Unknown event type";
return;
} else {
qDebug()<<"Unknown event type";
return;
else {
Q_ASSERT(event->type() == ApiTraceCall::Frame);
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
else {
Q_ASSERT(event->type() == ApiTraceCall::Frame);
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
- call = frame->calls.value(0);
else {
Q_ASSERT(event->type() == ApiTraceCall::Frame);
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
else {
Q_ASSERT(event->type() == ApiTraceCall::Frame);
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
- call = frame->calls.value(0);
void MainWindow::slotGoFrameStart()
{
ApiTraceFrame *frame = currentFrame();
void MainWindow::slotGoFrameStart()
{
ApiTraceFrame *frame = currentFrame();
- if (!frame || frame->calls.isEmpty()) {
+ if (!frame || frame->isEmpty()) {
return;
}
QList<ApiTraceCall*>::const_iterator itr;
return;
}
QList<ApiTraceCall*>::const_iterator itr;
+ QList<ApiTraceCall*> calls = frame->calls();
- itr = frame->calls.constBegin();
- while (itr != frame->calls.constEnd()) {
+ itr = calls.constBegin();
+ while (itr != calls.constEnd()) {
ApiTraceCall *call = *itr;
QModelIndex idx = m_proxyModel->indexForCall(call);
if (idx.isValid()) {
ApiTraceCall *call = *itr;
QModelIndex idx = m_proxyModel->indexForCall(call);
if (idx.isValid()) {
void MainWindow::slotGoFrameEnd()
{
ApiTraceFrame *frame = currentFrame();
void MainWindow::slotGoFrameEnd()
{
ApiTraceFrame *frame = currentFrame();
- if (!frame || frame->calls.isEmpty()) {
+ if (!frame || frame->isEmpty()) {
return;
}
QList<ApiTraceCall*>::const_iterator itr;
return;
}
QList<ApiTraceCall*>::const_iterator itr;
+ QList<ApiTraceCall*> calls = frame->calls();
- itr = frame->calls.constEnd();
+ itr = calls.constEnd();
do {
--itr;
ApiTraceCall *call = *itr;
do {
--itr;
ApiTraceCall *call = *itr;
m_ui.callView->setCurrentIndex(idx);
break;
}
m_ui.callView->setCurrentIndex(idx);
break;
}
- } while (itr != frame->calls.constBegin());
+ } while (itr != calls.constBegin());
}
ApiTraceFrame * MainWindow::currentFrame() const
}
ApiTraceFrame * MainWindow::currentFrame() const