threads-win32: support UWP in mp_thread_set_name

This commit is contained in:
Kacper Michajłow 2023-11-07 02:44:00 +01:00 committed by Dudemanguy
parent add2f3c8c9
commit 2ae56e78dd
1 changed files with 7 additions and 3 deletions

View File

@ -198,18 +198,22 @@ static inline int mp_thread_detach(mp_thread thread)
wchar_t *mp_from_utf8(void *talloc_ctx, const char *s); wchar_t *mp_from_utf8(void *talloc_ctx, const char *s);
static inline void mp_thread_set_name(const char *name) static inline void mp_thread_set_name(const char *name)
{ {
HRESULT (WINAPI *pSetThreadDescription)(HANDLE, PCWSTR);
#if !HAVE_UWP #if !HAVE_UWP
HMODULE kernel32 = GetModuleHandleW(L"kernel32.dll"); HMODULE kernel32 = GetModuleHandleW(L"kernel32.dll");
if (!kernel32) if (!kernel32)
return; return;
HRESULT (WINAPI *pSetThreadDescription)(HANDLE, PCWSTR) = pSetThreadDescription = (void *) GetProcAddress(kernel32, "SetThreadDescription");
(void *) GetProcAddress(kernel32, "SetThreadDescription");
if (!pSetThreadDescription) if (!pSetThreadDescription)
return; return;
#else
WINBASEAPI HRESULT WINAPI
SetThreadDescription(HANDLE hThread, PCWSTR lpThreadDescription);
pSetThreadDescription = &SetThreadDescription;
#endif
wchar_t *wname = mp_from_utf8(NULL, name); wchar_t *wname = mp_from_utf8(NULL, name);
pSetThreadDescription(GetCurrentThread(), wname); pSetThreadDescription(GetCurrentThread(), wname);
talloc_free(wname); talloc_free(wname);
#endif
} }
static inline int64_t mp_thread_cpu_time_ns(mp_thread_id thread) static inline int64_t mp_thread_cpu_time_ns(mp_thread_id thread)