Added thread-safe initialization/cleanup support

Also went through and removed inappropriate uses of spinlocks.

Fixes https://github.com/libsdl-org/SDL/issues/10872
This commit is contained in:
Sam Lantinga
2024-09-16 22:45:37 -07:00
parent 7edd43c276
commit 9275c533ca
7 changed files with 208 additions and 132 deletions

View File

@@ -574,16 +574,11 @@ static void SetupAudioResampler(void)
void SDL_SetupAudioResampler(void)
{
static SDL_SpinLock running = 0;
static SDL_InitState init;
if (!ResampleFrame[0]) {
SDL_LockSpinlock(&running);
if (!ResampleFrame[0]) {
SetupAudioResampler();
}
SDL_UnlockSpinlock(&running);
if (SDL_ShouldInit(&init)) {
SetupAudioResampler();
SDL_SetInitialized(&init, true);
}
}