diff --git a/src/modules/audio/openal/Pool.cpp b/src/modules/audio/openal/Pool.cpp index 05cd71711..7607a6393 100644 --- a/src/modules/audio/openal/Pool.cpp +++ b/src/modules/audio/openal/Pool.cpp @@ -103,9 +103,16 @@ void Pool::update() { thread::Lock lock(mutex); + std::vector torelease; + for (const auto &i : playing) + { if (!i.first->update()) - releaseSource(i.first); + torelease.push_back(i.first); + } + + for (Source *s : torelease) + releaseSource(s); } int Pool::getSourceCount() const