From f8b2ffdc7e0fd22312e6a89e3c10cd471a20a771 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Tue, 10 Jul 2018 22:01:13 +0200 Subject: [PATCH] Clear queues before new on-demand connection is made. --- client/TracyProfiler.cpp | 12 ++++++++++++ client/TracyProfiler.hpp | 1 + 2 files changed, 13 insertions(+) diff --git a/client/TracyProfiler.cpp b/client/TracyProfiler.cpp index 5e3b57b0..37687134 100644 --- a/client/TracyProfiler.cpp +++ b/client/TracyProfiler.cpp @@ -294,6 +294,7 @@ void Profiler::Worker() } #ifdef TRACY_ON_DEMAND + ClearQueues( token ); m_isConnected.store( true, std::memory_order_relaxed ); #endif @@ -398,6 +399,17 @@ void Profiler::Worker() } } +void Profiler::ClearQueues( moodycamel::ConsumerToken& token ) +{ + // TODO analyse dropped items and free associated memory + + while( s_queue.try_dequeue_bulk( token, m_itemBuf, BulkSize ) > 0 ) {} + + std::lock_guard lock( m_serialLock ); + m_serialDequeue.clear(); + m_serialQueue.clear(); +} + Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token ) { const auto sz = s_queue.try_dequeue_bulk( token, m_itemBuf, BulkSize ); diff --git a/client/TracyProfiler.hpp b/client/TracyProfiler.hpp index ce2c5f1d..9ad722b1 100644 --- a/client/TracyProfiler.hpp +++ b/client/TracyProfiler.hpp @@ -300,6 +300,7 @@ private: static void LaunchWorker( void* ptr ) { ((Profiler*)ptr)->Worker(); } void Worker(); + void ClearQueues( moodycamel::ConsumerToken& token ); DequeueStatus Dequeue( moodycamel::ConsumerToken& token ); DequeueStatus DequeueSerial(); bool AppendData( const void* data, size_t len );