From 7a24073f6d6376b3279ca030c82f0f57144707cf Mon Sep 17 00:00:00 2001 From: Maximilian Mader Date: Wed, 13 Jul 2022 15:51:37 +0200 Subject: [PATCH] Make sure that `AL_BUFFERS_PROCESSED` returns a valid value in `_audio_deinit()` --- SDL/audio/openal.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/SDL/audio/openal.c b/SDL/audio/openal.c index 8a2072b..88f0ceb 100644 --- a/SDL/audio/openal.c +++ b/SDL/audio/openal.c @@ -59,13 +59,16 @@ static void _audio_deinit(void) { // Stop the source (this should mark all queued buffers as processed) alSourceStop(al_source); - // Free the processed buffers while ignoring potential errors + // Check if there are buffers that can be freed ALint processed; alGetSourcei(al_source, AL_BUFFERS_PROCESSED, &processed); - while (processed--) { - ALuint buffer; - alSourceUnqueueBuffers(al_source, 1, &buffer); - alDeleteBuffers(1, &buffer); + if (!AL_ERROR("Failed to query number of processed buffers")) { + // Try to free the buffers, we do not care about potential errors here + while (processed--) { + ALuint buffer; + alSourceUnqueueBuffers(al_source, 1, &buffer); + alDeleteBuffers(1, &buffer); + } } alDeleteSources(1, &al_source);