diff --git a/public/client/TracyProfiler.cpp b/public/client/TracyProfiler.cpp index 3d7b13ab..08f86859 100644 --- a/public/client/TracyProfiler.cpp +++ b/public/client/TracyProfiler.cpp @@ -3071,21 +3071,39 @@ Profiler::DequeueStatus Profiler::DequeueSerial() case QueueType::MessageCallstack: { ThreadCtxCheckSerial( messageFatThread ); - ptr = MemRead( &item->messageFat.textAndMetadata ).GetAddress(); + TaggedUserlandAddress taggedPtr = MemRead( &item->messageFat.textAndMetadata ); + ptr = taggedPtr.GetAddress(); uint16_t size = MemRead( &item->messageFat.size ); SendSingleString( (const char*)ptr, size ); tracy_free_fast( (void*)ptr ); - break; + + const uint8_t metadata = taggedPtr.GetTag(); + QueueItem itemWithMetadata; + MemWrite( &itemWithMetadata.hdr, item->hdr ); + MemWrite( &itemWithMetadata.messageMetadata, item->message ); + MemWrite( &itemWithMetadata.messageMetadata.metadata, metadata ); + AppendData( &itemWithMetadata, QueueDataSize[idx] ); + item++; + continue; // Next item since we sent it manually } case QueueType::MessageColor: case QueueType::MessageColorCallstack: { ThreadCtxCheckSerial( messageColorFatThread ); - ptr = MemRead( &item->messageColorFat.textAndMetadata ).GetAddress(); + TaggedUserlandAddress taggedPtr = MemRead( &item->messageColorFat.textAndMetadata ); + ptr = taggedPtr.GetAddress(); uint16_t size = MemRead( &item->messageColorFat.size ); SendSingleString( (const char*)ptr, size ); tracy_free_fast( (void*)ptr ); - break; + + const uint8_t metadata = taggedPtr.GetTag(); + QueueItem itemWithMetadata; + MemWrite( &itemWithMetadata.hdr, item->hdr ); + MemWrite( &itemWithMetadata.messageColorMetadata, item->messageColor ); + MemWrite( &itemWithMetadata.messageColorMetadata.metadata, metadata ); + AppendData( &itemWithMetadata, QueueDataSize[idx] ); + item++; + continue; // Next item since we sent it manually } case QueueType::Callstack: {