diff --git a/src/modules/audio/openal/Pool.cpp b/src/modules/audio/openal/Pool.cpp index e20cbd05e..eda5a973f 100644 --- a/src/modules/audio/openal/Pool.cpp +++ b/src/modules/audio/openal/Pool.cpp @@ -271,9 +271,9 @@ namespace openal if(i != playing.end()) { source->stopAtomic(); - source->release(); available.push(i->second); playing.erase(i++); + source->release(); return true; } diff --git a/src/modules/audio/openal/Source.cpp b/src/modules/audio/openal/Source.cpp index 399d271da..60bc8f1a2 100644 --- a/src/modules/audio/openal/Source.cpp +++ b/src/modules/audio/openal/Source.cpp @@ -65,7 +65,8 @@ namespace openal Source::~Source() { - pool->stop(this); + if (valid) + pool->stop(this); alDeleteBuffers((type == TYPE_STATIC) ? 1 : MAX_BUFFERS, buffers); if (decoder) decoder->release();