소스 검색

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 b378bc5c83eab9abf6d025a1434d27c2a81fe912)
Sam Lantinga 1 년 전
부모
커밋
44ec2027f3
1개의 변경된 파일5개의 추가작업 그리고 0개의 파일을 삭제
  1. 5 0
      src/thread/SDL_thread.c

+ 5 - 0
src/thread/SDL_thread.c

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