diff --git a/src/audio/AL/ALAudio.cpp b/src/audio/AL/ALAudio.cpp index 966c715c..5e47f7b8 100644 --- a/src/audio/AL/ALAudio.cpp +++ b/src/audio/AL/ALAudio.cpp @@ -254,6 +254,13 @@ void ALSpeaker::stop() { stopped = true; if (source) { AL_CHECK(alSourceStop(source)); + + uint processed = AL::getSourcei(source, AL_BUFFERS_PROCESSED); + while (processed--) { + uint buffer; + AL_CHECK(alSourceUnqueueBuffers(source, 1, &buffer)); + al->freeBuffer(buffer); + } al->freeSource(source); } }