mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 10:41:50 +00:00
Handle frame name queries.
This commit is contained in:
parent
4424a7d7e8
commit
9b4348b497
@ -660,7 +660,7 @@ bool Profiler::SendData( const char* data, size_t len )
|
|||||||
|
|
||||||
void Profiler::SendString( uint64_t str, const char* ptr, QueueType type )
|
void Profiler::SendString( uint64_t str, const char* ptr, QueueType type )
|
||||||
{
|
{
|
||||||
assert( type == QueueType::StringData || type == QueueType::ThreadName || type == QueueType::CustomStringData || type == QueueType::PlotName );
|
assert( type == QueueType::StringData || type == QueueType::ThreadName || type == QueueType::CustomStringData || type == QueueType::PlotName || type == QueueType::FrameName );
|
||||||
|
|
||||||
QueueItem item;
|
QueueItem item;
|
||||||
MemWrite( &item.hdr.type, type );
|
MemWrite( &item.hdr.type, type );
|
||||||
@ -806,6 +806,9 @@ bool Profiler::HandleServerQuery()
|
|||||||
case ServerQueryCallstackFrame:
|
case ServerQueryCallstackFrame:
|
||||||
SendCallstackFrame( ptr );
|
SendCallstackFrame( ptr );
|
||||||
break;
|
break;
|
||||||
|
case ServerQueryFrameName:
|
||||||
|
SendString( ptr, (const char*)ptr, QueueType::FrameName );
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
assert( false );
|
assert( false );
|
||||||
break;
|
break;
|
||||||
|
@ -47,6 +47,7 @@ enum class QueueType : uint8_t
|
|||||||
PlotName,
|
PlotName,
|
||||||
SourceLocationPayload,
|
SourceLocationPayload,
|
||||||
CallstackPayload,
|
CallstackPayload,
|
||||||
|
FrameName,
|
||||||
NUM_TYPES
|
NUM_TYPES
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -316,6 +317,7 @@ static const size_t QueueDataSize[] = {
|
|||||||
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // plot name
|
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // plot name
|
||||||
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // allocated source location payload
|
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // allocated source location payload
|
||||||
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // callstack payload
|
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // callstack payload
|
||||||
|
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // frame name
|
||||||
};
|
};
|
||||||
|
|
||||||
static_assert( QueueItemSize == 32, "Queue item size not 32 bytes" );
|
static_assert( QueueItemSize == 32, "Queue item size not 32 bytes" );
|
||||||
|
@ -1283,6 +1283,9 @@ void Worker::DispatchProcess( const QueueItem& ev, char*& ptr )
|
|||||||
case QueueType::CallstackPayload:
|
case QueueType::CallstackPayload:
|
||||||
AddCallstackPayload( ev.stringTransfer.ptr, ptr, sz );
|
AddCallstackPayload( ev.stringTransfer.ptr, ptr, sz );
|
||||||
break;
|
break;
|
||||||
|
case QueueType::FrameName:
|
||||||
|
HandleFrameName( ev.stringTransfer.ptr, ptr, sz );
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
assert( false );
|
assert( false );
|
||||||
break;
|
break;
|
||||||
@ -1662,6 +1665,16 @@ void Worker::HandlePlotName( uint64_t name, char* str, size_t sz )
|
|||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Worker::HandleFrameName( uint64_t name, char* str, size_t sz )
|
||||||
|
{
|
||||||
|
const auto sl = StoreString( str, sz );
|
||||||
|
m_data.frames.StringDiscovered( name, sl, m_data.strings, [this] ( FrameData* dst, FrameData* src ) {
|
||||||
|
auto sz = dst->frames.size();
|
||||||
|
dst->frames.insert( dst->frames.end(), src->frames.begin(), src->frames.end() );
|
||||||
|
std::inplace_merge( dst->frames.begin(), dst->frames.begin() + sz, dst->frames.end() );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
void Worker::HandlePostponedPlots()
|
void Worker::HandlePostponedPlots()
|
||||||
{
|
{
|
||||||
for( auto& plot : m_data.plots.Data() )
|
for( auto& plot : m_data.plots.Data() )
|
||||||
|
@ -324,6 +324,7 @@ private:
|
|||||||
|
|
||||||
void InsertPlot( PlotData* plot, int64_t time, double val );
|
void InsertPlot( PlotData* plot, int64_t time, double val );
|
||||||
void HandlePlotName( uint64_t name, char* str, size_t sz );
|
void HandlePlotName( uint64_t name, char* str, size_t sz );
|
||||||
|
void HandleFrameName( uint64_t name, char* str, size_t sz );
|
||||||
|
|
||||||
void HandlePostponedPlots();
|
void HandlePostponedPlots();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user