mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 10:41:50 +00:00
Make srcloc dynamic color depend on function name.
This commit is contained in:
parent
ca0fae33d1
commit
13b656fe61
@ -135,7 +135,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct SourceLocation
|
struct SourceLocationBase
|
||||||
{
|
{
|
||||||
StringRef name;
|
StringRef name;
|
||||||
StringRef function;
|
StringRef function;
|
||||||
@ -144,6 +144,11 @@ struct SourceLocation
|
|||||||
uint32_t color;
|
uint32_t color;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct SourceLocation : public SourceLocationBase
|
||||||
|
{
|
||||||
|
mutable uint32_t namehash;
|
||||||
|
};
|
||||||
|
|
||||||
enum { SourceLocationSize = sizeof( SourceLocation ) };
|
enum { SourceLocationSize = sizeof( SourceLocation ) };
|
||||||
|
|
||||||
|
|
||||||
@ -510,7 +515,7 @@ struct SourceLocationHasher
|
|||||||
{
|
{
|
||||||
size_t operator()( const SourceLocation* ptr ) const
|
size_t operator()( const SourceLocation* ptr ) const
|
||||||
{
|
{
|
||||||
return charutil::hash( (const char*)ptr, sizeof( SourceLocation ) );
|
return charutil::hash( (const char*)ptr, sizeof( SourceLocationBase ) );
|
||||||
}
|
}
|
||||||
typedef tracy::power_of_two_hash_policy hash_policy;
|
typedef tracy::power_of_two_hash_policy hash_policy;
|
||||||
};
|
};
|
||||||
@ -519,7 +524,7 @@ struct SourceLocationComparator
|
|||||||
{
|
{
|
||||||
bool operator()( const SourceLocation* lhs, const SourceLocation* rhs ) const
|
bool operator()( const SourceLocation* lhs, const SourceLocation* rhs ) const
|
||||||
{
|
{
|
||||||
return memcmp( lhs, rhs, sizeof( SourceLocation ) ) == 0;
|
return memcmp( lhs, rhs, sizeof( SourceLocationBase ) ) == 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -12849,7 +12849,22 @@ uint32_t View::GetRawZoneColor( const ZoneEvent& ev, uint64_t thread, int depth
|
|||||||
if( color != 0 ) return color | 0xFF000000;
|
if( color != 0 ) return color | 0xFF000000;
|
||||||
if( m_vd.dynamicColors == 2 )
|
if( m_vd.dynamicColors == 2 )
|
||||||
{
|
{
|
||||||
return GetThreadColor( sl, depth );
|
auto namehash = srcloc.namehash;
|
||||||
|
if( namehash == 0 && srcloc.function.active )
|
||||||
|
{
|
||||||
|
const auto f = m_worker.GetString( srcloc.function );
|
||||||
|
namehash = charutil::hash( f );
|
||||||
|
if( namehash == 0 ) namehash++;
|
||||||
|
srcloc.namehash = namehash;
|
||||||
|
}
|
||||||
|
if( namehash == 0 )
|
||||||
|
{
|
||||||
|
return GetThreadColor( sl, depth );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return GetThreadColor( namehash, depth );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -541,7 +541,8 @@ Worker::Worker( FileRead& f, EventType::Type eventMask, bool bgTasks )
|
|||||||
uint64_t ptr;
|
uint64_t ptr;
|
||||||
f.Read( ptr );
|
f.Read( ptr );
|
||||||
SourceLocation srcloc;
|
SourceLocation srcloc;
|
||||||
f.Read( srcloc );
|
f.Read( &srcloc, sizeof( SourceLocationBase ) );
|
||||||
|
srcloc.namehash = 0;
|
||||||
m_data.sourceLocation.emplace( ptr, srcloc );
|
m_data.sourceLocation.emplace( ptr, srcloc );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -555,7 +556,8 @@ Worker::Worker( FileRead& f, EventType::Type eventMask, bool bgTasks )
|
|||||||
for( uint64_t i=0; i<sz; i++ )
|
for( uint64_t i=0; i<sz; i++ )
|
||||||
{
|
{
|
||||||
auto srcloc = m_slab.Alloc<SourceLocation>();
|
auto srcloc = m_slab.Alloc<SourceLocation>();
|
||||||
f.Read( srcloc, sizeof( *srcloc ) );
|
f.Read( srcloc, sizeof( SourceLocationBase ) );
|
||||||
|
srcloc->namehash = 0;
|
||||||
m_data.sourceLocationPayload[i] = srcloc;
|
m_data.sourceLocationPayload[i] = srcloc;
|
||||||
m_data.sourceLocationPayloadMap.emplace( srcloc, int16_t( i ) );
|
m_data.sourceLocationPayloadMap.emplace( srcloc, int16_t( i ) );
|
||||||
}
|
}
|
||||||
@ -5424,7 +5426,7 @@ void Worker::Write( FileWrite& f )
|
|||||||
for( auto& v : m_data.sourceLocation )
|
for( auto& v : m_data.sourceLocation )
|
||||||
{
|
{
|
||||||
f.Write( &v.first, sizeof( v.first ) );
|
f.Write( &v.first, sizeof( v.first ) );
|
||||||
f.Write( &v.second, sizeof( v.second ) );
|
f.Write( &v.second, sizeof( SourceLocationBase ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
sz = m_data.sourceLocationExpand.size();
|
sz = m_data.sourceLocationExpand.size();
|
||||||
|
Loading…
Reference in New Issue
Block a user