From d5c8021b4122f893f56ed1a226e0526333dd39d4 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Tue, 9 Jan 2024 16:16:20 +0100 Subject: [PATCH] fix: Use a thread-local storage for thread names instead --- lib/libimhex/source/api/task_manager.cpp | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/lib/libimhex/source/api/task_manager.cpp b/lib/libimhex/source/api/task_manager.cpp index bb49cdd31..183e3d7b6 100644 --- a/lib/libimhex/source/api/task_manager.cpp +++ b/lib/libimhex/source/api/task_manager.cpp @@ -365,7 +365,9 @@ namespace hex { s_tasksFinishedCallbacks.push_back(function); } + thread_local static std::string s_currentThreadName; void TaskManager::setCurrentThreadName(const std::string &name) { + s_currentThreadName = name; #if defined(OS_WINDOWS) using SetThreadDescriptionFunc = HRESULT(WINAPI*)(HANDLE hThread, PCWSTR lpThreadDescription); @@ -408,26 +410,7 @@ namespace hex { } std::string TaskManager::getCurrentThreadName() { - #if defined(OS_WINDOWS) - PWSTR name; - if (SUCCEEDED(::GetThreadDescription(::GetCurrentThread(), &name))) { - auto utf8Name = hex::utf16ToUtf8(name); - LocalFree(name); - - return utf8Name; - } - - return ""; - #elif defined(OS_MACOS) || defined(OS_LINUX) - std::array name = { }; - pthread_getname_np(pthread_self(), name.data(), name.size()); - - return name.data(); - #elif defined(OS_WEB) - return ""; - #else - return ""; - #endif + return s_currentThreadName; }