1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Implement setting client parameters from server.

This commit is contained in:
Bartosz Taudul
2019-11-25 23:59:48 +01:00
parent c5c9dfb0c9
commit 4551553eb4
9 changed files with 135 additions and 2 deletions
+31
View File
@@ -1054,6 +1054,7 @@ Profiler::Profiler()
, m_connectionId( 0 )
, m_deferredQueue( 64*1024 )
#endif
, m_paramCallback( nullptr )
{
assert( !s_instance );
s_instance = this;
@@ -2264,6 +2265,9 @@ bool Profiler::HandleServerQuery()
SysTraceSendExternalName( ptr );
break;
#endif
case ServerQueryParameter:
HandleParameter( ptr );
break;
default:
assert( false );
break;
@@ -2508,6 +2512,33 @@ void Profiler::ProcessSysTime()
}
#endif
void Profiler::ParameterSetup( uint32_t idx, const char* name, bool isBool, int32_t val )
{
tracy::Magic magic;
auto token = tracy::GetToken();
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin( magic );
tracy::MemWrite( &item->hdr.type, tracy::QueueType::ParamSetup );
tracy::MemWrite( &item->paramSetup.idx, idx );
tracy::MemWrite( &item->paramSetup.name, (uint64_t)name );
tracy::MemWrite( &item->paramSetup.isBool, (uint8_t)isBool );
tracy::MemWrite( &item->paramSetup.val, val );
#ifdef TRACY_ON_DEMAND
DeferItem( *item );
#endif
tail.store( magic + 1, std::memory_order_release );
}
void Profiler::HandleParameter( uint64_t payload )
{
assert( m_paramCallback );
const auto idx = uint32_t( payload >> 32 );
const auto val = int32_t( payload & 0xFFFFFFFF );
m_paramCallback( idx, val );
}
}
#ifdef __cplusplus