aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/sound.cpp
diff options
context:
space:
mode:
authorEric Fry2019-09-23 23:50:24 +1000
committerEugene Sandulenko2019-09-23 20:39:13 +0200
commit64cf3b6e9b9f54ae643e9b3aa6d1db249f53d3bc (patch)
treeb62b0f2be8f8a2df1b586a1db53e6faf91cd7f34 /engines/illusions/sound.cpp
parentb4b9ad1743dcf97999b7fda4860aa964d119118c (diff)
downloadscummvm-rg350-64cf3b6e9b9f54ae643e9b3aa6d1db249f53d3bc.tar.gz
scummvm-rg350-64cf3b6e9b9f54ae643e9b3aa6d1db249f53d3bc.tar.bz2
scummvm-rg350-64cf3b6e9b9f54ae643e9b3aa6d1db249f53d3bc.zip
ILLUSIONS: DUCKMAN: Fix endless SFX bug #11161
Diffstat (limited to 'engines/illusions/sound.cpp')
-rw-r--r--engines/illusions/sound.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/engines/illusions/sound.cpp b/engines/illusions/sound.cpp
index bd39469d76..9a351a29bc 100644
--- a/engines/illusions/sound.cpp
+++ b/engines/illusions/sound.cpp
@@ -342,6 +342,10 @@ bool Sound::isPlaying() {
return g_system->getMixer()->isSoundHandleActive(_soundHandle);
}
+bool Sound::isLooping() {
+ return _looping;
+}
+
// SoundMan
SoundMan::SoundMan(IllusionsEngine *vm)
@@ -450,6 +454,15 @@ void SoundMan::stopSound(uint32 soundEffectId) {
sound->stop();
}
+void SoundMan::stopLoopingSounds() {
+ for (SoundListIterator it = _sounds.begin(); it != _sounds.end(); ++it) {
+ Sound *sound = *it;
+ if (sound->isPlaying() && sound->isLooping()) {
+ sound->stop();
+ }
+ }
+}
+
void SoundMan::unloadSounds(uint32 soundGroupId) {
SoundListIterator it = _sounds.begin();
while (it != _sounds.end()) {