From f67f069e3f830b824f1f61db03ebbe7bddb9c19f Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 22 Jun 2011 18:58:59 +1000 Subject: [PATCH] TSAGE: Fix sounds not getting registered in Globals::_sounds This fixes a problem in Scene 20 where the scene wasn't ending after a sound fade --- engines/tsage/sound.cpp | 10 +++++++++- engines/tsage/sound.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp index 980e080e733..d57aa876e29 100644 --- a/engines/tsage/sound.cpp +++ b/engines/tsage/sound.cpp @@ -302,7 +302,8 @@ void SoundManager::addToPlayList(Sound *sound) { } void SoundManager::removeFromPlayList(Sound *sound) { - _sfRemoveFromPlayList(sound); + if (_soundManager) + _sfRemoveFromPlayList(sound); } bool SoundManager::isOnPlayList(Sound *sound) { @@ -2246,6 +2247,13 @@ int Sound::_soFindSound(VoiceTypeStruct *vtStruct, int channelNum) { ASound::ASound(): EventHandler() { _action = NULL; _cueValue = -1; + if (_globals) + _globals->_sounds.push_back(this); +} + +ASound::~ASound() { + if (_globals) + _globals->_sounds.remove(this); } void ASound::synchronize(Serializer &s) { diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h index 0da54fc179b..9a8cfb3cfc6 100644 --- a/engines/tsage/sound.h +++ b/engines/tsage/sound.h @@ -361,6 +361,7 @@ public: int _cueValue; ASound(); + ~ASound(); virtual void synchronize(Serializer &s); virtual void dispatch();