diff --git a/common/TracySystem.cpp b/common/TracySystem.cpp index 544aac1d..97ff47be 100755 --- a/common/TracySystem.cpp +++ b/common/TracySystem.cpp @@ -16,13 +16,40 @@ const char* PointerCheckA = "tracy"; void SetThreadName( std::thread& thread, const char* name ) { #ifdef _WIN32 +# ifdef NTDDI_WIN10_RS2 wchar_t buf[256]; mbstowcs( buf, name, 256 ); SetThreadDescription( static_cast( thread.native_handle() ), buf ); +# else + const DWORD MS_VC_EXCEPTION=0x406D1388; +# pragma pack( push, 8 ) + struct THREADNAME_INFO + { + DWORD dwType; + LPCSTR szName; + DWORD dwThreadID; + DWORD dwFlags; + }; +# pragma pack(pop) + + DWORD ThreadId = GetThreadId( static_cast( thread.native_handle() ) ); + THREADNAME_INFO info; + info.dwType = 0x1000; + info.szName = name; + info.dwThreadID = ThreadId; + info.dwFlags = 0; + + __try + { + RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info ); + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + } +# endif #else pthread_setname_np( thread.native_handle(), name ); #endif - } } \ No newline at end of file