Fix race condition in Movie destructor

This commit is contained in:
刘皓 2025-05-19 15:16:34 -04:00
parent 8cf251bd5d
commit 09ec1db6f4
No known key found for this signature in database
GPG key ID: 7901753DB465B711

View file

@ -397,6 +397,12 @@ struct Movie
~Movie()
{
if (hasAudio) {
audioThreadTermReq.set();
if(audioThread) {
SDL_WaitThread(audioThread, 0);
audioThread = 0;
}
if (audioQueueTail) {
THEORAPLAY_freeAudio(audioQueueTail->audio);
}
@ -407,11 +413,6 @@ struct Movie
}
audioQueueHead = NULL;
SDL_DestroyMutex(audioMutex);
audioThreadTermReq.set();
if(audioThread) {
SDL_WaitThread(audioThread, 0);
audioThread = 0;
}
alSourceStop(audioSource);
alDeleteSources(1, &audioSource);
alDeleteBuffers(STREAM_BUFS, alBuffers);