switch (marker) {
case FrameMarker_SwapBuffers:
- return call->name.contains(QLatin1String("SwapBuffers"));
+ return call->name().contains(QLatin1String("SwapBuffers"));
case FrameMarker_Flush:
- return call->name == QLatin1String("glFlush");
+ return call->name() == QLatin1String("glFlush");
case FrameMarker_Finish:
- return call->name == QLatin1String("glFinish");
+ return call->name() == QLatin1String("glFinish");
case FrameMarker_Clear:
- return call->name == QLatin1String("glClear");
+ return call->name() == QLatin1String("glClear");
}
Q_ASSERT(!"unknown frame marker");
currentFrame = new ApiTraceFrame();
currentFrame->number = m_frames.count();
}
- apiCall->parentFrame = currentFrame;
+ apiCall->setParentFrame(currentFrame);
currentFrame->calls.append(apiCall);
if (ApiTrace::isCallAFrameMarker(apiCall,
m_frameMarker)) {
{
for (int i = 0; i < m_calls.count(); ++i) {
ApiTraceCall *call = m_calls[i];
- if (call->index == idx)
+ if (call->index() == idx)
return call;
}
return NULL;
if (!m_staticText.text().isEmpty())
return m_staticText;
- QString richText = QString::fromLatin1("<span style=\"font-weight:bold\">%1</span>(").arg(name);
- for (int i = 0; i < argNames.count(); ++i) {
+ QString richText = QString::fromLatin1("<span style=\"font-weight:bold\">%1</span>(").arg(m_name);
+ for (int i = 0; i < m_argNames.count(); ++i) {
richText += QLatin1String("<span style=\"color:#0000ff\">");
- QString argText = apiVariantToString(argValues[i]);
+ QString argText = apiVariantToString(m_argValues[i]);
//if arguments are really long (e.g. shader text), cut them
// and elide it
richText += argText;
}
richText += QLatin1String("</span>");
- if (i < argNames.count() - 1)
+ if (i < m_argNames.count() - 1)
richText += QString::fromLatin1(", ");
}
richText += QLatin1String(")");
- if (returnValue.isValid()) {
+ if (m_returnValue.isValid()) {
richText += QLatin1String(" = ");
richText += QLatin1String("<span style=\"color:#0000ff\">");
- richText += apiVariantToString(returnValue);
+ richText += apiVariantToString(m_returnValue);
richText += QLatin1String("</span>");
}
if (!m_richText.isEmpty())
return m_richText;
- if (helpUrl.isEmpty()) {
+ if (m_helpUrl.isEmpty()) {
m_richText = QString::fromLatin1(
"%1) <span style=\"font-weight:bold\">%2</span>(")
- .arg(index)
- .arg(name);
+ .arg(m_index)
+ .arg(m_name);
} else {
m_richText = QString::fromLatin1(
"%1) <span style=\"font-weight:bold\"><a href=\"%2\">%3</a></span>(")
- .arg(index)
- .arg(helpUrl.toString())
- .arg(name);
+ .arg(m_index)
+ .arg(m_helpUrl.toString())
+ .arg(m_name);
}
- for (int i = 0; i < argNames.count(); ++i) {
- m_richText += argNames[i];
+ for (int i = 0; i < m_argNames.count(); ++i) {
+ m_richText += m_argNames[i];
m_richText += QString::fromLatin1(" = ");
m_richText += QLatin1String("<span style=\"color:#0000ff\">");
- m_richText += apiVariantToString(argValues[i]);
+ m_richText += apiVariantToString(m_argValues[i]);
m_richText += QLatin1String("</span>");
- if (i < argNames.count() - 1)
+ if (i < m_argNames.count() - 1)
m_richText += QString::fromLatin1(", ");
}
m_richText += QLatin1String(")");
- if (returnValue.isValid()) {
+ if (m_returnValue.isValid()) {
m_richText += QLatin1String(" = ");
m_richText += QLatin1String("<span style=\"color:#0000ff\">");
- m_richText += apiVariantToString(returnValue);
+ m_richText += apiVariantToString(m_returnValue);
m_richText += QLatin1String("</span>");
}
return m_richText;
if (!m_filterText.isEmpty())
return m_filterText;
- m_filterText = name;
+ m_filterText = m_name;
m_filterText += QLatin1String("(");
- for (int i = 0; i < argNames.count(); ++i) {
- m_filterText += argNames[i];
+ for (int i = 0; i < m_argNames.count(); ++i) {
+ m_filterText += m_argNames[i];
m_filterText += QString::fromLatin1(" = ");
- if (argValues[i].type() == QVariant::ByteArray) {
+ if (m_argValues[i].type() == QVariant::ByteArray) {
m_hasBinaryData = true;
m_binaryDataIndex = i;
}
- m_filterText += apiVariantToString(argValues[i]);
- if (i < argNames.count() - 1)
+ m_filterText += apiVariantToString(m_argValues[i]);
+ if (i < m_argNames.count() - 1)
m_filterText += QString::fromLatin1(", ");
}
m_filterText += QLatin1String(")");
- if (returnValue.isValid()) {
+ if (m_returnValue.isValid()) {
m_filterText += QLatin1String(" = ");
- m_filterText += apiVariantToString(returnValue);
+ m_filterText += apiVariantToString(m_returnValue);
}
return m_filterText;
}
{
return m_array;
}
+
+int ApiTraceCall::index() const
+{
+ return m_index;
+}
+
+QString ApiTraceCall::name() const
+{
+ return m_name;
+}
+
+QStringList ApiTraceCall::argNames() const
+{
+ return m_argNames;
+}
+
+QVariantList ApiTraceCall::arguments() const
+{
+ return m_argValues;
+}
+
+QVariant ApiTraceCall::returnValue() const
+{
+ return m_returnValue;
+}
+
+QUrl ApiTraceCall::helpUrl() const
+{
+ return m_helpUrl;
+}
+
+ApiTraceCall::ApiTraceCall(const Trace::Call *call)
+ : ApiTraceEvent(ApiTraceEvent::Call),
+ m_hasBinaryData(false),
+ m_binaryDataIndex(0)
+{
+ m_name = QString::fromStdString(call->sig->name);
+ m_index = call->no;
+
+ QString argumentsText;
+ for (int i = 0; i < call->sig->arg_names.size(); ++i) {
+ m_argNames +=
+ QString::fromStdString(call->sig->arg_names[i]);
+ }
+ if (call->ret) {
+ VariantVisitor retVisitor;
+ call->ret->visit(retVisitor);
+ m_returnValue = retVisitor.variant();
+ }
+ for (int i = 0; i < call->args.size(); ++i) {
+ VariantVisitor argVisitor;
+ call->args[i]->visit(argVisitor);
+ m_argValues += argVisitor.variant();
+ }
+}
+
+void ApiTraceCall::setHelpUrl(const QUrl &url)
+{
+ m_helpUrl = url;
+}
+
+void ApiTraceCall::setParentFrame(ApiTraceFrame *frame)
+{
+ m_parentFrame = frame;
+}
+
+ApiTraceFrame * ApiTraceCall::parentFrame()const
+{
+ return m_parentFrame;
+}
{
public:
ApiTraceCall();
+ ApiTraceCall(const Trace::Call *tcall);
~ApiTraceCall();
- int index;
- QString name;
- QStringList argNames;
- QVariantList argValues;
- QVariant returnValue;
- ApiTraceFrame *parentFrame;
- QUrl helpUrl;
+ int index() const;
+ QString name() const;
+ QStringList argNames() const;
+ QVariantList arguments() const;
+ QVariant returnValue() const;
+ QUrl helpUrl() const;
+ void setHelpUrl(const QUrl &url);
+ ApiTraceFrame *parentFrame()const;
+ void setParentFrame(ApiTraceFrame *frame);
QString toHtml() const;
QString filterText() const;
bool hasBinaryData() const;
int binaryDataIndex() const;
private:
+ int m_index;
+ QString m_name;
+ QStringList m_argNames;
+ QVariantList m_argValues;
+ QVariant m_returnValue;
+ ApiTraceFrame *m_parentFrame;
+ QUrl m_helpUrl;
+
mutable QString m_richText;
mutable QString m_filterText;
mutable QStaticText m_staticText;
}
ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
- QString function = call->name;
+ QString function = call->name();
if (!m_regexp.isEmpty() && m_regexp.isValid()) {
return function.contains(m_regexp);
ApiTraceCall *call = static_cast<ApiTraceCall*>(itm);
if (call->state().isEmpty())
return QString::fromLatin1("%1) <b>%2</b>")
- .arg(call->index)
- .arg(call->name);
+ .arg(call->index())
+ .arg(call->name());
else
return QString::fromLatin1("%1) <b>%2</b><br/>%3")
- .arg(call->index)
- .arg(call->name)
+ .arg(call->index())
+ .arg(call->name())
.arg(stateText);
} else {
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(itm);
ApiTraceEvent *event = item(index);
if (event && event->type() == ApiTraceEvent::Call) {
ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
- Q_ASSERT(call->parentFrame);
- return createIndex(call->parentFrame->number,
- 0, call->parentFrame);
+ Q_ASSERT(call->parentFrame());
+ return createIndex(call->parentFrame()->number,
+ 0, call->parentFrame());
}
return QModelIndex();
}
if (event->type() == ApiTraceEvent::Call) {
ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
- ApiTraceFrame *frame = call->parentFrame;
+ ApiTraceFrame *frame = call->parentFrame();
int row = frame->calls.indexOf(call);
QModelIndex index = createIndex(row, 0, call);
emit dataChanged(index, index);
return QModelIndex();
}
- ApiTraceFrame *frame = call->parentFrame;
+ ApiTraceFrame *frame = call->parentFrame();
Q_ASSERT(frame);
int row = frame->calls.indexOf(call);
if (row < 0) {
- qDebug() << "Couldn't find call num "<<call->index<<" inside parent!";
+ qDebug() << "Couldn't find call num "<<call->index()<<" inside parent!";
return QModelIndex();
}
return createIndex(row, 0, call);
if (!m_call)
return;
- m_ui.callLabel->setText(m_call->name);
+ m_ui.callLabel->setText(m_call->name());
QStandardItem *rootItem = m_model->invisibleRootItem();
- for (int i = 0; i < m_call->argNames.count(); ++i) {
- QString argName = m_call->argNames[i];
- QVariant val = m_call->argValues[i];
+ for (int i = 0; i < m_call->argNames().count(); ++i) {
+ QString argName = m_call->argNames()[i];
+ QVariant val = m_call->arguments()[i];
QStandardItem *nameItem = new QStandardItem(argName);
nameItem->setFlags(nameItem->flags() ^ Qt::ItemIsEditable);
QList<QStandardItem*> topRow;
apiCallFromTraceCall(const Trace::Call *call,
const QHash<QString, QUrl> &helpHash)
{
- ApiTraceCall *apiCall = new ApiTraceCall();
- apiCall->name = QString::fromStdString(call->sig->name);
- apiCall->index = call->no;
-
- QString argumentsText;
- for (int i = 0; i < call->sig->arg_names.size(); ++i) {
- apiCall->argNames +=
- QString::fromStdString(call->sig->arg_names[i]);
- }
- if (call->ret) {
- VariantVisitor retVisitor;
- call->ret->visit(retVisitor);
- apiCall->returnValue = retVisitor.variant();
- }
- for (int i = 0; i < call->args.size(); ++i) {
- VariantVisitor argVisitor;
- call->args[i]->visit(argVisitor);
- apiCall->argValues += argVisitor.variant();
- }
+ ApiTraceCall *apiCall = new ApiTraceCall(call);
- apiCall->helpUrl = helpHash.value(apiCall->name);
+ apiCall->setHelpUrl(helpHash.value(apiCall->name()));
//force generation of the internal state
apiCall->filterText();
}
ApiTraceCall *apiCall =
apiCallFromTraceCall(call, helpHash);
- apiCall->parentFrame = currentFrame;
+ apiCall->setParentFrame(currentFrame);
currentFrame->calls.append(apiCall);
if (ApiTrace::isCallAFrameMarker(apiCall,
m_frameMarker)) {
m_ui.detailsDock->show();
if (call->hasBinaryData()) {
QByteArray data =
- call->argValues[call->binaryDataIndex()].toByteArray();
+ call->arguments()[call->binaryDataIndex()].toByteArray();
m_vdataInterpreter->setData(data);
+ QVariantList args = call->arguments();
- for (int i = 0; i < call->argNames.count(); ++i) {
- QString name = call->argNames[i];
+ for (int i = 0; i < call->argNames().count(); ++i) {
+ QString name = call->argNames()[i];
if (name == QLatin1String("stride")) {
- int stride = call->argValues[i].toInt();
+ int stride = args[i].toInt();
m_ui.vertexStrideSB->setValue(stride);
} else if (name == QLatin1String("size")) {
- int components = call->argValues[i].toInt();
+ int components = args[i].toInt();
m_ui.vertexComponentsSB->setValue(components);
} else if (name == QLatin1String("type")) {
- QString val = call->argValues[i].toString();
+ QString val = args[i].toString();
int textIndex = m_ui.vertexTypeCB->findText(val);
if (textIndex >= 0)
m_ui.vertexTypeCB->setCurrentIndex(textIndex);
if (m_retracer->captureState() && m_selectedEvent) {
int index = 0;
if (m_selectedEvent->type() == ApiTraceEvent::Call) {
- index = static_cast<ApiTraceCall*>(m_selectedEvent)->index;
+ index = static_cast<ApiTraceCall*>(m_selectedEvent)->index();
} else if (m_selectedEvent->type() == ApiTraceEvent::Frame) {
ApiTraceFrame *frame =
static_cast<ApiTraceFrame*>(m_selectedEvent);
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;