From e095d519990a896d022d1ce4f8f2d8da8b7967d5 Mon Sep 17 00:00:00 2001 From: Capostrophic Date: Sun, 26 May 2019 19:23:42 +0300 Subject: [PATCH] More queue handling adjustments --- apps/openmw/mwsound/soundmanagerimp.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwsound/soundmanagerimp.cpp b/apps/openmw/mwsound/soundmanagerimp.cpp index 2879afb2a..77f25f326 100644 --- a/apps/openmw/mwsound/soundmanagerimp.cpp +++ b/apps/openmw/mwsound/soundmanagerimp.cpp @@ -769,7 +769,10 @@ namespace MWSound for(SoundBufferRefPair &snd : snditer->second) mOutput->finishSound(snd.first); } - SaySoundMap::iterator sayiter = mActiveSaySounds.find(ptr); + SaySoundMap::iterator sayiter = mSaySoundsQueue.find(ptr); + if(sayiter != mSaySoundsQueue.end()) + mOutput->finishStream(sayiter->second); + sayiter = mActiveSaySounds.find(ptr); if(sayiter != mActiveSaySounds.end()) mOutput->finishStream(sayiter->second); } @@ -785,6 +788,12 @@ namespace MWSound } } + for(SaySoundMap::value_type &snd : mSaySoundsQueue) + { + if(!snd.first.isEmpty() && snd.first != MWMechanics::getPlayer() && snd.first.getCell() == cell) + mOutput->finishStream(snd.second); + } + for(SaySoundMap::value_type &snd : mActiveSaySounds) { if(!snd.first.isEmpty() && snd.first != MWMechanics::getPlayer() && snd.first.getCell() == cell) @@ -1086,7 +1095,7 @@ namespace MWSound } SaySoundMap::iterator sayiter = mActiveSaySounds.begin(); - while (sayiter != mActiveSaySounds.end()) + while(sayiter != mActiveSaySounds.end()) { MWWorld::ConstPtr ptr = sayiter->first; Stream *sound = sayiter->second;