21 #include "../../SDL_internal.h" 27 #include "../SDL_thread_c.h" 28 #include "../SDL_systhread.h" 34 #include <system_error> 53 thread->
handle = (
void *)
new std::thread(std::move(cpp_thread));
55 }
catch (std::system_error & ex) {
56 SDL_SetError(
"unable to start a C++ thread: code=%d; %s", ex.code(), ex.what());
58 }
catch (std::bad_alloc &) {
78 return GetCurrentThreadId();
85 if (current_thread_id == 0) {
86 std::lock_guard<std::mutex>
lock(next_thread_id_mutex);
87 current_thread_id = next_thread_id;
91 return current_thread_id;
123 std::thread * cpp_thread = (std::thread *) thread->
handle;
124 if (cpp_thread->joinable()) {
127 }
catch (std::system_error &) {
143 std::thread * cpp_thread = (std::thread *) thread->
handle;
144 if (cpp_thread->joinable()) {
145 cpp_thread->detach();
147 }
catch (std::system_error &) {
static void RunThread(void *args)
int SDL_Generic_SetTLSData(SDL_TLSData *storage)
SDL_TLSData * SDL_Generic_GetTLSData(void)
void SDL_SYS_WaitThread(SDL_Thread *thread)
SDL_threadID SDL_ThreadID(void)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLuint const GLchar * name
void SDL_SYS_DetachThread(SDL_Thread *thread)
int SDL_SYS_SetTLSData(SDL_TLSData *data)
void SDL_SYS_SetupThread(const char *name)
#define SDL_OutOfMemory()
int SDL_SYS_SetThreadPriority(SDL_ThreadPriority priority)
int SDL_SYS_CreateThread(SDL_Thread *thread, void *args)
void SDL_RunThread(void *data)
SDL_TLSData * SDL_SYS_GetTLSData(void)
unsigned long SDL_threadID