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
+8
View File
@@ -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;
};
};