1
0
mirror of https://github.com/wolfpld/tracy synced 2025-05-02 05:33:53 +00:00

Add a separate method for clearing serial queue.

This commit is contained in:
Bartosz Taudul 2019-08-14 22:39:12 +02:00
parent bccb845908
commit c0b524d8de
2 changed files with 17 additions and 13 deletions

View File

@ -1614,23 +1614,26 @@ void Profiler::ClearQueues( moodycamel::ConsumerToken& token )
for( size_t i=0; i<sz; i++ ) FreeAssociatedMemory( m_itemBuf[i] ); for( size_t i=0; i<sz; i++ ) FreeAssociatedMemory( m_itemBuf[i] );
} }
ClearSerial();
}
void Profiler::ClearSerial()
{
bool lockHeld = true;
while( !m_serialLock.try_lock() )
{ {
bool lockHeld = true; if( m_shutdownManual.load( std::memory_order_relaxed ) )
while( !m_serialLock.try_lock() )
{ {
if( m_shutdownManual.load( std::memory_order_relaxed ) ) lockHeld = false;
{ break;
lockHeld = false;
break;
}
}
for( auto& v : m_serialQueue ) FreeAssociatedMemory( v );
m_serialQueue.clear();
if( lockHeld )
{
m_serialLock.unlock();
} }
} }
for( auto& v : m_serialQueue ) FreeAssociatedMemory( v );
m_serialQueue.clear();
if( lockHeld )
{
m_serialLock.unlock();
}
for( auto& v : m_serialDequeue ) FreeAssociatedMemory( v ); for( auto& v : m_serialDequeue ) FreeAssociatedMemory( v );
m_serialDequeue.clear(); m_serialDequeue.clear();

View File

@ -452,6 +452,7 @@ private:
void CompressWorker(); void CompressWorker();
void ClearQueues( tracy::moodycamel::ConsumerToken& token ); void ClearQueues( tracy::moodycamel::ConsumerToken& token );
void ClearSerial();
DequeueStatus Dequeue( tracy::moodycamel::ConsumerToken& token ); DequeueStatus Dequeue( tracy::moodycamel::ConsumerToken& token );
DequeueStatus DequeueSerial(); DequeueStatus DequeueSerial();
bool AppendData( const void* data, size_t len ); bool AppendData( const void* data, size_t len );