aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/sound/sound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/sound/sound.cpp')
-rw-r--r--engines/titanic/sound/sound.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/engines/titanic/sound/sound.cpp b/engines/titanic/sound/sound.cpp
index 7e791c2ba5..6d27d1de49 100644
--- a/engines/titanic/sound/sound.cpp
+++ b/engines/titanic/sound/sound.cpp
@@ -87,14 +87,18 @@ void CSound::stopChannel(int channel) {
}
void CSound::checkSounds() {
- for (CSoundItemList::iterator i = _sounds.begin(); i != _sounds.end(); ++i) {
+ for (CSoundItemList::iterator i = _sounds.begin(); i != _sounds.end(); ) {
CSoundItem *soundItem = *i;
+
if (soundItem->_active && soundItem->_freeFlag) {
if (_soundManager.isActive(soundItem->_waveFile)) {
- _sounds.remove(soundItem);
+ i = _sounds.erase(i);
delete soundItem;
+ continue;
}
}
+
+ ++i;
}
}
@@ -155,6 +159,9 @@ int CSound::playSound(const CString &name, CProximity &prox) {
return -1;
prox._field6C = waveFile->fn1();
+ if (prox._soundType != Audio::Mixer::kPlainSoundType)
+ waveFile->_soundType = prox._soundType;
+
activateSound(waveFile, prox._freeSoundFlag);
return _soundManager.playSound(*waveFile, prox);