diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 8aaf7f9c..419e9be9 100755 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -163,4 +163,14 @@ void View::CheckString( uint64_t ptr ) m_sock.Send( &ptr, sizeof( ptr ) ); } +void View::AddString( uint64_t ptr, std::string&& str ) +{ + assert( m_strings.find( ptr ) == m_strings.end( ptr ) ); + auto it = m_pendingStrings.find( ptr ); + assert( it != m_pendingStrings.end() ); + m_pendingStrings.erase( it ); + std::lock_guard lock( m_lock ); + m_strings.emplace( ptr, std::move( str ) ); +} + } diff --git a/server/TracyView.hpp b/server/TracyView.hpp index a1f0e84c..7e8f81a7 100755 --- a/server/TracyView.hpp +++ b/server/TracyView.hpp @@ -35,6 +35,7 @@ private: void ProcessZoneEnd( uint64_t id, const QueueZoneEnd& ev ); void CheckString( uint64_t ptr ); + void AddString( uint64_t ptr, std::string&& str ); std::string m_addr; @@ -44,6 +45,7 @@ private: int64_t m_timeBegin; + // this block must be locked std::mutex m_lock; std::vector m_data; std::vector m_timeline;