diff --git a/server/TracyEvent.hpp b/server/TracyEvent.hpp index c719ccf9..dd2efa79 100644 --- a/server/TracyEvent.hpp +++ b/server/TracyEvent.hpp @@ -331,6 +331,7 @@ struct SymbolData : public CallstackFrameBasic StringIdx imageName; StringIdx callFile; uint32_t callLine; + uint8_t isInline; }; enum { CallstackFrameBasicSize = sizeof( CallstackFrameBasic ) }; diff --git a/server/TracyView.cpp b/server/TracyView.cpp index a59058e8..065309a7 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -11244,12 +11244,14 @@ void View::DrawStatistics() const char* file = "[unknown]"; const char* imageName = "[unknown]"; uint32_t line = 0; + bool isInline = false; auto sit = symMap.find( v->first ); if( sit != symMap.end() ) { name = m_worker.GetString( sit->second.name ); imageName = m_worker.GetString( sit->second.imageName ); + isInline = sit->second.isInline; if( m_statSampleLocation == 0 ) { file = m_worker.GetString( sit->second.file ); @@ -11262,6 +11264,15 @@ void View::DrawStatistics() } } + if( isInline ) + { +#ifdef TRACY_EXTENDED_FONT + TextDisabledUnformatted( ICON_FA_CARET_RIGHT ); +#else + TextDisabledUnformatted( "inline" ); +#endif + ImGui::SameLine(); + } ImGui::TextUnformatted( name ); ImGui::NextColumn(); float indentVal = 0.f; diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index e75f6554..86c78f94 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -1645,8 +1645,9 @@ Worker::Worker( FileRead& f, EventType::Type eventMask, bool bgTasks ) uint64_t symAddr; StringIdx name, file, imageName, callFile; uint32_t line, callLine; - f.Read7( symAddr, name, file, line, imageName, callFile, callLine ); - m_data.symbolMap.emplace( symAddr, SymbolData { name, file, line, imageName, callFile, callLine } ); + uint8_t isInline; + f.Read8( symAddr, name, file, line, imageName, callFile, callLine, isInline ); + m_data.symbolMap.emplace( symAddr, SymbolData { name, file, line, imageName, callFile, callLine, isInline } ); } } @@ -4827,7 +4828,7 @@ void Worker::ProcessCallstackFrame( const QueueCallstackFrame& ev ) if( ev.symAddr != 0 && m_data.symbolMap.find( ev.symAddr ) == m_data.symbolMap.end() && m_pendingSymbols.find( ev.symAddr ) == m_pendingSymbols.end() ) { - m_pendingSymbols.emplace( ev.symAddr, SymbolPending { name, m_callstackFrameStaging->imageName, file, ev.line } ); + m_pendingSymbols.emplace( ev.symAddr, SymbolPending { name, m_callstackFrameStaging->imageName, file, ev.line, idx < m_callstackFrameStaging->size - 1 } ); Query( ServerQuerySymbol, ev.symAddr ); } @@ -4862,6 +4863,7 @@ void Worker::ProcessSymbolInformation( const QueueSymbolInformation& ev ) sd.imageName = it->second.imageName; sd.callFile = it->second.file; sd.callLine = it->second.line; + sd.isInline = it->second.isInline; m_data.symbolMap.emplace( ev.symAddr, std::move( sd ) ); m_pendingSymbols.erase( it ); diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index 2062fc57..d04631e8 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -181,6 +181,7 @@ private: StringIdx imageName; StringIdx file; uint32_t line; + bool isInline; }; struct DataBlock