From def6b4fc3e38392c8345af9945cb3a1d208a7726 Mon Sep 17 00:00:00 2001 From: uruk Date: Tue, 22 Jul 2014 18:54:48 +0200 Subject: CGE2: Add and use Sound::checkSoundHandle(). --- engines/cge2/cge2_main.cpp | 2 ++ engines/cge2/snail.cpp | 5 +---- engines/cge2/sound.cpp | 5 +++++ engines/cge2/sound.h | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) (limited to 'engines') diff --git a/engines/cge2/cge2_main.cpp b/engines/cge2/cge2_main.cpp index f887bdc2fe..f8fa274bc8 100644 --- a/engines/cge2/cge2_main.cpp +++ b/engines/cge2/cge2_main.cpp @@ -551,6 +551,8 @@ void CGE2Engine::mainLoop() { // Check shouldQuit() _quitFlag = shouldQuit(); + + _sound->checkSoundHandle(); } void CGE2Engine::handleFrame() { diff --git a/engines/cge2/snail.cpp b/engines/cge2/snail.cpp index 8cb8d19b24..9dce4dbbc8 100644 --- a/engines/cge2/snail.cpp +++ b/engines/cge2/snail.cpp @@ -742,10 +742,7 @@ void CGE2Engine::snSay(Sprite *spr, int val) { _sound->setRepeat(1); snSound(spr, i); _sound->setRepeat(oldRepeat); - //_commandStat._wait = &_sound->_smpinf._counter; - // This line is commented out for now since I wasn't able to find where this flag is reset - // and it's prevented the main loop from doing anything. - // TODO: Recheck this later! At the moment it seems working fine. + _soundStat._wait = &_sound->_smpinf._counter; } } } diff --git a/engines/cge2/sound.cpp b/engines/cge2/sound.cpp index b7b39d2722..7e886e5639 100644 --- a/engines/cge2/sound.cpp +++ b/engines/cge2/sound.cpp @@ -106,6 +106,11 @@ void Sound::stop() { sndDigiStop(&_smpinf); } +void Sound::checkSoundHandle() { + if (!_vm->_mixer->isSoundHandleActive(_soundHandle)) + _smpinf._counter = 0; +} + void Sound::sndDigiStop(SmpInfo *PSmpInfo) { if (_vm->_mixer->isSoundHandleActive(_soundHandle)) _vm->_mixer->stopHandle(_soundHandle); diff --git a/engines/cge2/sound.h b/engines/cge2/sound.h index 6fa2b2a553..e2e9482799 100644 --- a/engines/cge2/sound.h +++ b/engines/cge2/sound.h @@ -76,6 +76,7 @@ public: int16 getRepeat(); void setRepeat(int16 count); void stop(); + void checkSoundHandle(); private: int _soundRepeatCount; CGE2Engine *_vm; -- cgit v1.2.3