diff --git a/client/TracyProfiler.cpp b/client/TracyProfiler.cpp index 26c21264..cb1e527a 100644 --- a/client/TracyProfiler.cpp +++ b/client/TracyProfiler.cpp @@ -964,6 +964,7 @@ Profiler::Profiler() #ifdef TRACY_ON_DEMAND , m_isConnected( false ) , m_frameCount( 0 ) + , m_connectionId( 0 ) , m_deferredQueue( 64*1024 ) #endif { @@ -1162,6 +1163,7 @@ void Profiler::Worker() #ifdef TRACY_ON_DEMAND ClearQueues( token ); + m_connectionId.fetch_add( 1, std::memory_order_release ); m_isConnected.store( true, std::memory_order_release ); #endif diff --git a/client/TracyProfiler.hpp b/client/TracyProfiler.hpp index ae9fa964..b6024173 100644 --- a/client/TracyProfiler.hpp +++ b/client/TracyProfiler.hpp @@ -405,11 +405,16 @@ public: static bool ShouldExit(); #ifdef TRACY_ON_DEMAND - tracy_force_inline bool IsConnected() + tracy_force_inline bool IsConnected() const { return m_isConnected.load( std::memory_order_acquire ); } + tracy_force_inline uint64_t ConnectionId() const + { + return m_connectionId.load( std::memory_order_acquire ); + } + tracy_force_inline void DeferItem( const QueueItem& item ) { m_deferredLock.lock(); @@ -529,6 +534,7 @@ private: #ifdef TRACY_ON_DEMAND std::atomic m_isConnected; std::atomic m_frameCount; + std::atomic m_connectionId; TracyMutex m_deferredLock; FastVector m_deferredQueue; diff --git a/client/TracyScoped.hpp b/client/TracyScoped.hpp index cfa2678a..9048911f 100644 --- a/client/TracyScoped.hpp +++ b/client/TracyScoped.hpp @@ -18,6 +18,7 @@ public: tracy_force_inline ScopedZone( const SourceLocationData* srcloc, bool is_active = true ) #ifdef TRACY_ON_DEMAND : m_active( is_active && GetProfiler().IsConnected() ) + , m_connectionId( GetProfiler().ConnectionId() ) #else : m_active( is_active ) #endif @@ -45,6 +46,7 @@ public: tracy_force_inline ScopedZone( const SourceLocationData* srcloc, int depth, bool is_active = true ) #ifdef TRACY_ON_DEMAND : m_active( is_active && GetProfiler().IsConnected() ) + , m_connectionId( GetProfiler().ConnectionId() ) #else : m_active( is_active ) #endif @@ -74,6 +76,9 @@ public: tracy_force_inline ~ScopedZone() { if( !m_active ) return; +#ifdef TRACY_ON_DEMAND + if( GetProfiler().ConnectionId() != m_connectionId ) return; +#endif Magic magic; auto token = GetToken(); auto& tail = token->get_tail_index(); @@ -93,6 +98,9 @@ public: tracy_force_inline void Text( const char* txt, size_t size ) { if( !m_active ) return; +#ifdef TRACY_ON_DEMAND + if( GetProfiler().ConnectionId() != m_connectionId ) return; +#endif Magic magic; auto token = GetToken(); auto ptr = (char*)tracy_malloc( size+1 ); @@ -109,6 +117,9 @@ public: tracy_force_inline void Name( const char* txt, size_t size ) { if( !m_active ) return; +#ifdef TRACY_ON_DEMAND + if( GetProfiler().ConnectionId() != m_connectionId ) return; +#endif Magic magic; auto token = GetToken(); auto ptr = (char*)tracy_malloc( size+1 ); @@ -125,6 +136,10 @@ public: private: uint64_t m_thread; const bool m_active; + +#ifdef TRACY_ON_DEMAND + uint64_t m_connectionId; +#endif }; }