Make sure timers are initialized before any threads start

This prevents race conditions and divide by zero if multiple threads start using the time functions simultaneously.

(cherry picked from commit b378bc5c83)
This commit is contained in:
Sam Lantinga
2024-07-12 08:00:04 -07:00
parent 000da98663
commit 44ec2027f3

View File

@@ -27,6 +27,7 @@
#include "SDL_systhread.h"
#include "SDL_hints.h"
#include "../SDL_error_c.h"
#include "../timer/SDL_timer_c.h"
/* The storage is local to the thread, but the IDs are global for the process */
@@ -371,6 +372,10 @@ SDL_Thread *SDL_CreateThreadWithStackSize(int(SDLCALL *fn)(void *),
SDL_InitTLSData();
#ifndef SDL_TIMERS_DISABLED
SDL_TicksInit();
#endif
/* Allocate memory for the thread info structure */
thread = (SDL_Thread *)SDL_calloc(1, sizeof(*thread));
if (!thread) {