diff --git a/src/libprojectM/UserSprites/SpriteManager.cpp b/src/libprojectM/UserSprites/SpriteManager.cpp index d8aef4d8c2..fa8a6c3c86 100644 --- a/src/libprojectM/UserSprites/SpriteManager.cpp +++ b/src/libprojectM/UserSprites/SpriteManager.cpp @@ -62,14 +62,21 @@ void SpriteManager::Draw(const Audio::FrameAudioData& audioData, uint32_t outputFramebufferObject, Sprite::PresetList presets) { + std::vector toDestroy; + for (auto& idAndSprite : m_sprites) { idAndSprite.second->Draw(audioData, renderContext, outputFramebufferObject, presets); if (idAndSprite.second->Done()) { - Destroy(idAndSprite.first); + toDestroy.push_back(idAndSprite.first); } } + + for (auto id : toDestroy) + { + Destroy(id); + } } void SpriteManager::Destroy(SpriteIdentifier spriteIdentifier)