diff --git a/renderdoc/os/os_specific.h b/renderdoc/os/os_specific.h index cffc867fe..373cdc85a 100644 --- a/renderdoc/os/os_specific.h +++ b/renderdoc/os/os_specific.h @@ -147,6 +147,7 @@ typedef uint64_t ThreadHandle; ThreadHandle CreateThread(std::function entryFunc); uint64_t GetCurrentID(); void JoinThread(ThreadHandle handle); +void DetachThread(ThreadHandle handle); void CloseThread(ThreadHandle handle); void Sleep(uint32_t milliseconds); diff --git a/renderdoc/os/posix/posix_threading.cpp b/renderdoc/os/posix/posix_threading.cpp index 9f9108336..cc092ee4e 100644 --- a/renderdoc/os/posix/posix_threading.cpp +++ b/renderdoc/os/posix/posix_threading.cpp @@ -282,6 +282,10 @@ void JoinThread(ThreadHandle handle) { pthread_join((pthread_t)handle, NULL); } +void DetachThread(ThreadHandle handle) +{ + pthread_detach((pthread_t)handle); +} void CloseThread(ThreadHandle handle) { } diff --git a/renderdoc/os/win32/win32_threading.cpp b/renderdoc/os/win32/win32_threading.cpp index 4f7996e42..ce4bd0c32 100644 --- a/renderdoc/os/win32/win32_threading.cpp +++ b/renderdoc/os/win32/win32_threading.cpp @@ -273,6 +273,13 @@ void JoinThread(ThreadHandle handle) WaitForSingleObject((HANDLE)handle, INFINITE); } +void DetachThread(ThreadHandle handle) +{ + if(handle == 0) + return; + CloseHandle((HANDLE)handle); +} + void CloseThread(ThreadHandle handle) { if(handle == 0)