mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-14 18:27:50 +00:00
thread: Put all important SDL_CreateThread internal data into SDL_Thread.
This avoids the need to malloc something extra, use a semaphore, etc, and fixes Emscripten with pthreads support, which might not spin up a web worker until after SDL_CreateThread returns and thus can't wait on a semaphore at this point in any case. Fixes Bugzilla #5064.
This commit is contained in:
parent
abdc5cbf24
commit
46bb47cf04
8 changed files with 44 additions and 97 deletions
|
|
@ -40,16 +40,16 @@ extern "C" {
|
|||
static void
|
||||
RunThread(void *args)
|
||||
{
|
||||
SDL_RunThread(args);
|
||||
SDL_RunThread((SDL_Thread *) args);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
int
|
||||
SDL_SYS_CreateThread(SDL_Thread * thread, void *args)
|
||||
SDL_SYS_CreateThread(SDL_Thread * thread)
|
||||
{
|
||||
try {
|
||||
// !!! FIXME: no way to set a thread stack size here.
|
||||
std::thread cpp_thread(RunThread, args);
|
||||
std::thread cpp_thread(RunThread, thread);
|
||||
thread->handle = (void *) new std::thread(std::move(cpp_thread));
|
||||
return 0;
|
||||
} catch (std::system_error & ex) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue