From 54f778c204d22da7b7651a7048600d25d557c0fc Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Tue, 17 Mar 2026 02:29:12 +0100 Subject: [PATCH] Display ellipsis in single-line callstack printout, when frames remain. --- profiler/src/profiler/TracyView_Callstack.cpp | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/profiler/src/profiler/TracyView_Callstack.cpp b/profiler/src/profiler/TracyView_Callstack.cpp index ff157c19..8e834c2a 100644 --- a/profiler/src/profiler/TracyView_Callstack.cpp +++ b/profiler/src/profiler/TracyView_Callstack.cpp @@ -629,8 +629,11 @@ void View::DrawCallstackCalls( uint32_t callstack, uint16_t limit ) const { const auto& csdata = m_worker.GetCallstack( callstack ); bool first = true; - for( auto& v : csdata ) + + int i; + for( i = 0; i < csdata.size(); i++ ) { + const auto& v = csdata[i]; const auto frameData = m_worker.GetCallstackFrame( v ); if( !frameData ) break; const auto& frame = frameData->data[frameData->size - 1]; @@ -662,6 +665,29 @@ void View::DrawCallstackCalls( uint32_t callstack, uint16_t limit ) const } if( --limit == 0 ) break; } + if( limit == 0 ) + { + bool framesLeft = false; + while( ++i < csdata.size() ) + { + const auto& v = csdata[i]; + const auto frameData = m_worker.GetCallstackFrame( v ); + if( !frameData ) break; + const auto& frame = frameData->data[frameData->size - 1]; + auto filename = m_worker.GetString( frame.file ); + auto image = frameData->imageName.Active() ? m_worker.GetString( frameData->imageName ) : nullptr; + if( IsFrameExternal( filename, image ) ) continue; + framesLeft = true; + break; + } + if( framesLeft ) + { + ImGui::SameLine(); + TextDisabledUnformatted( ICON_FA_LEFT_LONG ); + ImGui::SameLine(); + TextDisabledUnformatted( ICON_FA_ELLIPSIS ); + } + } } void View::CallstackTooltip( uint32_t idx )