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 &) {