libobs: Use SetThreadDescription if possible

It's the better way to declare thread names, but you need Windows 10,
version 1607 to use it.
master
Henrik "Henke37" Andersson 2020-04-29 21:39:44 +02:00 committed by jp9000
parent d5d36b2f7a
commit 6fb19a8904
1 changed files with 18 additions and 0 deletions

View File

@ -16,6 +16,7 @@
#include "bmem.h"
#include "threading.h"
#include "util/platform.h"
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
@ -192,4 +193,21 @@ void os_set_thread_name(const char *name)
#endif
}
#endif
typedef HRESULT(WINAPI * set_thread_description_t)(HANDLE thread,
PCWSTR desc);
HMODULE k32 = LoadLibraryW(L"Kernel32.dll");
set_thread_description_t std = NULL;
std = (set_thread_description_t)GetProcAddress(k32,
"SetThreadDescription");
if (std) {
wchar_t *wname;
os_utf8_to_wcs_ptr(name, 0, &wname);
std(GetCurrentThread(), wname);
bfree(wname);
}
FreeLibrary(k32);
}