1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-29 04:23:51 +00:00

Always collect thread names.

This fixes an issue when a thread was destroyed before its name could be
retrieved.
This commit is contained in:
Bartosz Taudul 2019-08-14 16:52:04 +02:00
parent 5e199d1ab3
commit 71b54dd48a
3 changed files with 4 additions and 19 deletions

View File

@ -874,9 +874,7 @@ struct ProfilerData
Profiler profiler;
std::atomic<uint32_t> lockCounter { 0 };
std::atomic<uint8_t> gpuCtxCounter { 0 };
# ifdef TRACY_COLLECT_THREAD_NAMES
std::atomic<ThreadNameData*> threadNameData { nullptr };
#endif
};
struct ProducerWrapper
@ -924,10 +922,7 @@ TRACY_API std::atomic<uint32_t>& GetLockCounter() { return GetProfilerData().loc
TRACY_API std::atomic<uint8_t>& GetGpuCtxCounter() { return GetProfilerData().gpuCtxCounter; }
TRACY_API GpuCtxWrapper& GetGpuCtx() { return GetProfilerThreadData().gpuCtx; }
TRACY_API uint64_t GetThreadHandle() { return detail::GetThreadHandleImpl(); }
# ifdef TRACY_COLLECT_THREAD_NAMES
TRACY_API std::atomic<ThreadNameData*>& GetThreadNameData() { return GetProfilerData().threadNameData; }
# endif
# ifdef TRACY_ON_DEMAND
TRACY_API LuaZoneState& GetLuaZoneState() { return GetProfilerThreadData().luaZoneState; }
@ -965,11 +960,9 @@ std::atomic<uint8_t> init_order(104) s_gpuCtxCounter( 0 );
thread_local GpuCtxWrapper init_order(104) s_gpuCtx { nullptr };
# ifdef TRACY_COLLECT_THREAD_NAMES
struct ThreadNameData;
static std::atomic<ThreadNameData*> init_order(104) s_threadNameDataInstance( nullptr );
std::atomic<ThreadNameData*>& s_threadNameData = s_threadNameDataInstance;
# endif
# ifdef TRACY_ON_DEMAND
thread_local LuaZoneState init_order(104) s_luaZoneState { 0, false };
@ -991,9 +984,7 @@ TRACY_API uint64_t GetThreadHandle() { return detail::GetThreadHandleImpl(); }
TRACY_API uint64_t GetThreadHandle() { return s_threadHandle.val; }
# endif
# ifdef TRACY_COLLECT_THREAD_NAMES
TRACY_API std::atomic<ThreadNameData*>& GetThreadNameData() { return s_threadNameData; }
# endif
# ifdef TRACY_ON_DEMAND
TRACY_API LuaZoneState& GetLuaZoneState() { return s_luaZoneState; }

View File

@ -30,7 +30,7 @@
#include "TracySystem.hpp"
#ifdef TRACY_COLLECT_THREAD_NAMES
#ifdef TRACY_ENABLE
# include <atomic>
# include "TracyAlloc.hpp"
#endif
@ -38,7 +38,7 @@
namespace tracy
{
#ifdef TRACY_COLLECT_THREAD_NAMES
#ifdef TRACY_ENABLE
struct ThreadNameData
{
uint64_t id;
@ -99,7 +99,7 @@ void SetThreadName( const char* name )
}
}
#endif
#ifdef TRACY_COLLECT_THREAD_NAMES
#ifdef TRACY_ENABLE
{
InitRPMallocThread();
const auto sz = strlen( name );
@ -118,7 +118,7 @@ void SetThreadName( const char* name )
const char* GetThreadName( uint64_t id )
{
static char buf[256];
#ifdef TRACY_COLLECT_THREAD_NAMES
#ifdef TRACY_ENABLE
auto ptr = GetThreadNameData().load( std::memory_order_relaxed );
while( ptr )
{

View File

@ -1,12 +1,6 @@
#ifndef __TRACYSYSTEM_HPP__
#define __TRACYSYSTEM_HPP__
#ifdef TRACY_ENABLE
# if defined __ANDROID__ || defined __CYGWIN__ || defined __APPLE__ || defined _GNU_SOURCE || ( defined _WIN32 && ( !defined NTDDI_WIN10_RS2 || NTDDI_VERSION < NTDDI_WIN10_RS2 ) )
# define TRACY_COLLECT_THREAD_NAMES
# endif
#endif
#if defined _WIN32 || defined __CYGWIN__
# ifndef _WINDOWS_
extern "C" __declspec(dllimport) unsigned long __stdcall GetCurrentThreadId(void);