Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wolfpld/tracy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Taudul <wolf.pld@gmail.com>2019-08-16 20:49:16 +0300
committerBartosz Taudul <wolf.pld@gmail.com>2019-08-16 20:49:16 +0300
commite975c4d7bf73b3900e0fbf52f1511d185adbc9ef (patch)
treea439fab65a29c6f3df4482c51f7aca76437ca5c0 /server/TracyWorker.cpp
parent134a8c5d2a2d28d68c75b121488c0089af96fdec (diff)
Also retrieve external thread names.
Diffstat (limited to 'server/TracyWorker.cpp')
-rw-r--r--server/TracyWorker.cpp37
1 files changed, 27 insertions, 10 deletions
diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp
index c6e26378..91e09eab 100644
--- a/server/TracyWorker.cpp
+++ b/server/TracyWorker.cpp
@@ -499,12 +499,14 @@ Worker::Worker( FileRead& f, EventType::Type eventMask )
f.Read( sz );
for( uint64_t i=0; i<sz; i++ )
{
- uint64_t id, ptr;
+ uint64_t id, ptr, ptr2;
f.Read2( id, ptr );
+ f.Read( ptr2 );
auto it = pointerMap.find( ptr );
- if( it != pointerMap.end() )
+ auto it2 = pointerMap.find( ptr2 );
+ if( it != pointerMap.end() && it2 != pointerMap.end() )
{
- m_data.externalNames.emplace( id, it->second );
+ m_data.externalNames.emplace( id, std::make_pair( it->second, it2->second ) );
}
}
}
@@ -1854,12 +1856,12 @@ const SourceLocation& Worker::GetSourceLocation( int16_t srcloc ) const
}
}
-const char* Worker::GetExternalName( uint64_t id ) const
+std::pair<const char*, const char*> Worker::GetExternalName( uint64_t id ) const
{
const auto it = m_data.externalNames.find( id );
if( it == m_data.externalNames.end() )
{
- return "???";
+ return std::make_pair( "???", "???" );
}
else
{
@@ -2287,6 +2289,9 @@ bool Worker::DispatchProcess( const QueueItem& ev, char*& ptr )
case QueueType::ExternalName:
AddExternalName( ev.stringTransfer.ptr, ptr, sz );
break;
+ case QueueType::ExternalThreadName:
+ AddExternalThreadName( ev.stringTransfer.ptr, ptr, sz );
+ break;
default:
assert( false );
break;
@@ -2519,8 +2524,8 @@ void Worker::CheckExternalName( uint64_t id )
{
if( m_data.externalNames.find( id ) != m_data.externalNames.end() ) return;
- m_data.externalNames.emplace( id, "???" );
- m_pendingExternalNames++;
+ m_data.externalNames.emplace( id, std::make_pair( "???", "???" ) );
+ m_pendingExternalNames += 2;
Query( ServerQueryExternalName, id );
}
@@ -2622,9 +2627,19 @@ void Worker::AddExternalName( uint64_t ptr, char* str, size_t sz )
assert( m_pendingExternalNames > 0 );
m_pendingExternalNames--;
auto it = m_data.externalNames.find( ptr );
- assert( it != m_data.externalNames.end() && strcmp( it->second, "???" ) == 0 );
+ assert( it != m_data.externalNames.end() && strcmp( it->second.first, "???" ) == 0 );
const auto sl = StoreString( str, sz );
- it->second = sl.ptr;
+ it->second.first = sl.ptr;
+}
+
+void Worker::AddExternalThreadName( uint64_t ptr, char* str, size_t sz )
+{
+ assert( m_pendingExternalNames > 0 );
+ m_pendingExternalNames--;
+ auto it = m_data.externalNames.find( ptr );
+ assert( it != m_data.externalNames.end() && strcmp( it->second.second, "???" ) == 0 );
+ const auto sl = StoreString( str, sz );
+ it->second.second = sl.ptr;
}
static const uint8_t DxtcIndexTable[256] = {
@@ -4695,7 +4710,9 @@ void Worker::Write( FileWrite& f )
for( auto& v : m_data.externalNames )
{
f.Write( &v.first, sizeof( v.first ) );
- uint64_t ptr = (uint64_t)v.second;
+ uint64_t ptr = (uint64_t)v.second.first;
+ f.Write( &ptr, sizeof( ptr ) );
+ ptr = (uint64_t)v.second.second;
f.Write( &ptr, sizeof( ptr ) );
}