diff options
Diffstat (limited to 'thirdparty/etcpak/patches/pthread-setname.patch')
-rw-r--r-- | thirdparty/etcpak/patches/pthread-setname.patch | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/thirdparty/etcpak/patches/pthread-setname.patch b/thirdparty/etcpak/patches/pthread-setname.patch new file mode 100644 index 0000000000..e2b009a1b3 --- /dev/null +++ b/thirdparty/etcpak/patches/pthread-setname.patch @@ -0,0 +1,66 @@ +diff --git a/thirdparty/etcpak/System.cpp b/thirdparty/etcpak/System.cpp +index 1383d0ecd0..041f2676e8 100644 +--- a/thirdparty/etcpak/System.cpp ++++ b/thirdparty/etcpak/System.cpp +@@ -2,7 +2,6 @@ + #ifdef _WIN32 + # include <windows.h> + #else +-# include <pthread.h> + # include <unistd.h> + #endif + +@@ -35,7 +34,7 @@ unsigned int System::CPUCores() + + void System::SetThreadName( std::thread& thread, const char* name ) + { +-#ifdef _WIN32 ++#ifdef _MSC_VER + const DWORD MS_VC_EXCEPTION=0x406D1388; + + # pragma pack( push, 8 ) +@@ -62,7 +61,5 @@ void System::SetThreadName( std::thread& thread, const char* name ) + __except(EXCEPTION_EXECUTE_HANDLER) + { + } +-#elif !defined(__APPLE__) +- pthread_setname_np( thread.native_handle(), name ); + #endif + } +diff --git a/thirdparty/etcpak/TaskDispatch.cpp b/thirdparty/etcpak/TaskDispatch.cpp +index 7287da4de2..b1ba17953b 100644 +--- a/thirdparty/etcpak/TaskDispatch.cpp ++++ b/thirdparty/etcpak/TaskDispatch.cpp +@@ -1,5 +1,8 @@ + #include <assert.h> + #include <stdio.h> ++#ifndef _MSC_VER ++#include <pthread.h> ++#endif + + #include "Debug.hpp" + #include "System.hpp" +@@ -22,15 +25,19 @@ TaskDispatch::TaskDispatch( size_t workers ) + { + char tmp[16]; + sprintf( tmp, "Worker %zu", i ); +-#ifdef __APPLE__ ++#ifdef _MSC_VER ++ auto worker = std::thread( [this]{ Worker(); } ); ++ System::SetThreadName( worker, tmp ); ++#else // Using pthread. + auto worker = std::thread( [this, tmp]{ ++#ifdef __APPLE__ + pthread_setname_np( tmp ); ++#else // Linux or MinGW. ++ pthread_setname_np( pthread_self(), tmp ); ++#endif + Worker(); + } ); +-#else +- auto worker = std::thread( [this]{ Worker(); } ); + #endif +- System::SetThreadName( worker, tmp ); + m_workers.emplace_back( std::move( worker ) ); + } + |