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:
@@ -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
|
||||
|
||||
@@ -80,6 +80,8 @@ struct LuaZoneState
|
||||
using Magic = moodycamel::ConcurrentQueueDefaultTraits::index_t;
|
||||
|
||||
|
||||
typedef void(*ParameterCallback)( uint32_t idx, int32_t val );
|
||||
|
||||
class Profiler
|
||||
{
|
||||
struct FrameImageQueueItem
|
||||
@@ -442,6 +444,9 @@ public:
|
||||
#endif
|
||||
}
|
||||
|
||||
static void ParameterRegister( ParameterCallback cb ) { GetProfiler().m_paramCallback = cb; }
|
||||
static void ParameterSetup( uint32_t idx, const char* name, bool isBool, int32_t val );
|
||||
|
||||
void SendCallstack( int depth, const char* skipBefore );
|
||||
static void CutCallstack( void* callstack, const char* skipBefore );
|
||||
|
||||
@@ -506,6 +511,7 @@ private:
|
||||
|
||||
bool HandleServerQuery();
|
||||
void HandleDisconnect();
|
||||
void HandleParameter( uint64_t payload );
|
||||
|
||||
void CalibrateTimer();
|
||||
void CalibrateDelay();
|
||||
@@ -605,6 +611,8 @@ private:
|
||||
#else
|
||||
void ProcessSysTime() {}
|
||||
#endif
|
||||
|
||||
ParameterCallback m_paramCallback;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user