| 2356 | } |
| 2357 | |
| 2358 | Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token ) |
| 2359 | { |
| 2360 | bool connectionLost = false; |
| 2361 | const auto sz = GetQueue().try_dequeue_bulk_single( token, |
| 2362 | [this, &connectionLost] ( const uint32_t& threadId ) |
| 2363 | { |
| 2364 | if( ThreadCtxCheck( threadId ) == ThreadCtxStatus::ConnectionLost ) connectionLost = true; |
| 2365 | }, |
| 2366 | [this, &connectionLost] ( QueueItem* item, size_t sz ) |
| 2367 | { |
| 2368 | if( connectionLost ) return; |
| 2369 | InitRpmalloc(); |
| 2370 | assert( sz > 0 ); |
| 2371 | int64_t refThread = m_refTimeThread; |
| 2372 | int64_t refCtx = m_refTimeCtx; |
| 2373 | int64_t refGpu = m_refTimeGpu; |
| 2374 | while( sz-- > 0 ) |
| 2375 | { |
| 2376 | uint64_t ptr; |
| 2377 | uint16_t size; |
| 2378 | auto idx = MemRead<uint8_t>( &item->hdr.idx ); |
| 2379 | if( idx < (int)QueueType::Terminate ) |
| 2380 | { |
| 2381 | switch( (QueueType)idx ) |
| 2382 | { |
| 2383 | case QueueType::ZoneText: |
| 2384 | case QueueType::ZoneName: |
| 2385 | ptr = MemRead<uint64_t>( &item->zoneTextFat.text ); |
| 2386 | size = MemRead<uint16_t>( &item->zoneTextFat.size ); |
| 2387 | SendSingleString( (const char*)ptr, size ); |
| 2388 | tracy_free_fast( (void*)ptr ); |
| 2389 | break; |
| 2390 | case QueueType::Message: |
| 2391 | case QueueType::MessageCallstack: |
| 2392 | ptr = MemRead<uint64_t>( &item->messageFat.text ); |
| 2393 | size = MemRead<uint16_t>( &item->messageFat.size ); |
| 2394 | SendSingleString( (const char*)ptr, size ); |
| 2395 | tracy_free_fast( (void*)ptr ); |
| 2396 | break; |
| 2397 | case QueueType::MessageColor: |
| 2398 | case QueueType::MessageColorCallstack: |
| 2399 | ptr = MemRead<uint64_t>( &item->messageColorFat.text ); |
| 2400 | size = MemRead<uint16_t>( &item->messageColorFat.size ); |
| 2401 | SendSingleString( (const char*)ptr, size ); |
| 2402 | tracy_free_fast( (void*)ptr ); |
| 2403 | break; |
| 2404 | case QueueType::MessageAppInfo: |
| 2405 | ptr = MemRead<uint64_t>( &item->messageFat.text ); |
| 2406 | size = MemRead<uint16_t>( &item->messageFat.size ); |
| 2407 | SendSingleString( (const char*)ptr, size ); |
| 2408 | #ifndef TRACY_ON_DEMAND |
| 2409 | tracy_free_fast( (void*)ptr ); |
| 2410 | #endif |
| 2411 | break; |
| 2412 | case QueueType::ZoneBeginAllocSrcLoc: |
| 2413 | case QueueType::ZoneBeginAllocSrcLocCallstack: |
| 2414 | { |
| 2415 | int64_t t = MemRead<int64_t>( &item->zoneBegin.time ); |
nothing calls this directly
no test coverage detected