X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitracecall.cpp;h=0175bff81755e9e005f101e41a0ec6fc6f324432;hb=e4f7b243df9bb17abd4a20076bf74387bb1ac601;hp=2487e0467483e626b19b902016ac79f6e9c5afb2;hpb=5ec1deb2d9238b6636e73b5a7cd67a8a319c79aa;p=apitrace diff --git a/gui/apitracecall.cpp b/gui/apitracecall.cpp index 2487e04..0175bff 100644 --- a/gui/apitracecall.cpp +++ b/gui/apitracecall.cpp @@ -548,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 @@ -682,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() @@ -817,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())