X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitracecall.cpp;h=0175bff81755e9e005f101e41a0ec6fc6f324432;hb=b79fe3d2e482c492248d96da992f8fabcd9fe8cd;hp=907e10aa08294fc878549708a92e074fc9eb2681;hpb=e7cb2b98575d5ff3801bd3527a648e0dbfdebdad;p=apitrace diff --git a/gui/apitracecall.cpp b/gui/apitracecall.cpp index 907e10a..0175bff 100644 --- a/gui/apitracecall.cpp +++ b/gui/apitracecall.cpp @@ -490,20 +490,11 @@ ApiTraceState::ApiTraceState(const QVariantMap &parsedJson) QSize size(image[QLatin1String("__width__")].toInt(), image[QLatin1String("__height__")].toInt()); QString cls = image[QLatin1String("__class__")].toString(); - QString type = image[QLatin1String("__type__")].toString(); - bool normalized = - image[QLatin1String("__normalized__")].toBool(); - int numChannels = - image[QLatin1String("__channels__")].toInt(); int depth = image[QLatin1String("__depth__")].toInt(); QString formatName = image[QLatin1String("__format__")].toString(); - Q_ASSERT(type == QLatin1String("uint8")); - Q_ASSERT(normalized == true); - Q_UNUSED(normalized); - QByteArray dataArray = image[QLatin1String("__data__")].toByteArray(); @@ -511,7 +502,6 @@ ApiTraceState::ApiTraceState(const QVariantMap &parsedJson) tex.setSize(size); tex.setDepth(depth); tex.setFormatName(formatName); - tex.setNumChannels(numChannels); tex.setLabel(itr.key()); tex.contentsFromBase64(dataArray); @@ -525,16 +515,9 @@ ApiTraceState::ApiTraceState(const QVariantMap &parsedJson) QSize size(buffer[QLatin1String("__width__")].toInt(), buffer[QLatin1String("__height__")].toInt()); QString cls = buffer[QLatin1String("__class__")].toString(); - QString type = buffer[QLatin1String("__type__")].toString(); - bool normalized = buffer[QLatin1String("__normalized__")].toBool(); - int numChannels = buffer[QLatin1String("__channels__")].toInt(); int depth = buffer[QLatin1String("__depth__")].toInt(); QString formatName = buffer[QLatin1String("__format__")].toString(); - Q_ASSERT(type == QLatin1String("uint8")); - Q_ASSERT(normalized == true); - Q_UNUSED(normalized); - QByteArray dataArray = buffer[QLatin1String("__data__")].toByteArray(); @@ -542,7 +525,6 @@ ApiTraceState::ApiTraceState(const QVariantMap &parsedJson) fbo.setSize(size); fbo.setDepth(depth); fbo.setFormatName(formatName); - fbo.setNumChannels(numChannels); fbo.setType(itr.key()); fbo.contentsFromBase64(dataArray); m_framebuffers.append(fbo); @@ -566,7 +548,10 @@ const QVariantMap & ApiTraceState::uniforms() const bool ApiTraceState::isEmpty() const { - return m_parameters.isEmpty(); + return m_parameters.isEmpty() && + m_shaderSources.isEmpty() && + m_textures.isEmpty() && + m_framebuffers.isEmpty(); } const QList & ApiTraceState::textures() const @@ -700,6 +685,31 @@ ApiTraceCall::ApiTraceCall(ApiTraceFrame *parentFrame, } m_argValues.squeeze(); m_flags = call->flags; + if (call->backtrace != NULL) { + QString qbacktrace; + for (int i = 0; i < call->backtrace->size(); i++) { + const trace::StackFrame * frame = (*call->backtrace)[i]; + if (frame->module != NULL) { + qbacktrace += QString("%1 ").arg(frame->module); + } + if (frame->function != NULL) { + qbacktrace += QString("at %1() ").arg(frame->function); + } + if (frame->filename != NULL) { + qbacktrace += QString("at %1").arg(frame->filename); + if (frame->linenumber >= 0) { + qbacktrace += QString(":%1 ").arg(frame->linenumber); + } + } + else { + if (frame->offset >= 0) { + qbacktrace += QString("[0x%1]").arg(frame->offset, 0, 16); + } + } + qbacktrace += "\n"; + } + this->setBacktrace(qbacktrace); + } } ApiTraceCall::~ApiTraceCall() @@ -835,6 +845,16 @@ int ApiTraceCall::binaryDataIndex() const return m_binaryDataIndex; } +QString ApiTraceCall::backtrace() const +{ + return m_backtrace; +} + +void ApiTraceCall::setBacktrace(QString backtrace) +{ + m_backtrace = backtrace; +} + QStaticText ApiTraceCall::staticText() const { if (m_staticText && !m_staticText->text().isEmpty())