Moved SDL_rand auto-initialization out of SDL_rand_r

This commit is contained in:
John Kaniarz 2024-06-16 20:25:47 -04:00 committed by Sam Lantinga
parent 421326b6da
commit f4ee59a1a2

View file

@ -23,14 +23,22 @@
/* This file contains portable random functions for SDL */ /* This file contains portable random functions for SDL */
static Uint64 SDL_rand_state; static Uint64 SDL_rand_state;
static SDL_bool SDL_rand_initialized = SDL_FALSE;
void SDL_srand(Uint64 seed) void SDL_srand(Uint64 seed)
{ {
if (!seed) {
seed = SDL_GetPerformanceCounter();
}
SDL_rand_state = seed; SDL_rand_state = seed;
SDL_rand_initialized = SDL_TRUE;
} }
Uint32 SDL_rand(void) Uint32 SDL_rand(void)
{ {
if(!SDL_rand_initialized) {
SDL_srand(0);
}
return SDL_rand_r(&SDL_rand_state); return SDL_rand_r(&SDL_rand_state);
} }
@ -62,10 +70,6 @@ Uint32 SDL_rand_r(Uint64 *state)
return 0; return 0;
} }
if (!*state) {
*state = SDL_GetPerformanceCounter();
}
// Multiplier from Table 6 of // Multiplier from Table 6 of
// Steele GL, Vigna S. Computationally easy, spectrally good multipliers // Steele GL, Vigna S. Computationally easy, spectrally good multipliers
// for congruential pseudorandom number generators. // for congruential pseudorandom number generators.