From 70ca4218dfdc1a21682b98fd1ef540f965785c0b Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Wed, 16 Mar 2016 15:24:59 +0100 Subject: SCUMM: Check whether sound effects are active in Player_AD::getSoundStatus. This fixes bug #7076 "LOOM: AdLib sound effect not stopped at Cygna's grave.". Original SCUMM (I checked Monkey Island EGA) implemented Sound::isSoundRunning by checking whether the sound resource of the requested sound id is locked. We use actual sound state inside the player. --- engines/scumm/players/player_ad.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'engines') diff --git a/engines/scumm/players/player_ad.cpp b/engines/scumm/players/player_ad.cpp index 4d4be2c3c2..ec297aa40e 100644 --- a/engines/scumm/players/player_ad.cpp +++ b/engines/scumm/players/player_ad.cpp @@ -178,7 +178,17 @@ int Player_AD::getMusicTimer() { } int Player_AD::getSoundStatus(int sound) const { - return (sound == _soundPlaying); + if (sound == _soundPlaying) { + return true; + } + + for (int i = 0; i < ARRAYSIZE(_sfx); ++i) { + if (_sfx[i].resource == sound) { + return true; + } + } + + return false; } void Player_AD::saveLoadWithSerializer(Serializer *ser) { -- cgit v1.2.3