[Scummvm-cvs-logs] scummvm master -> f67f069e3f830b824f1f61db03ebbe7bddb9c19f
dreammaster
dreammaster at scummvm.org
Wed Jun 22 11:01:00 CEST 2011
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
45e1d7aa0d TSAGE: Bugfix for sound assert in scene 20
7ef6bea74e TSAGE: Clarified Globals::_sceneListeners as Globals::_sounds
f67f069e3f TSAGE: Fix sounds not getting registered in Globals::_sounds
Commit: 45e1d7aa0dc144792bf5b922d79337dec621ef81
https://github.com/scummvm/scummvm/commit/45e1d7aa0dc144792bf5b922d79337dec621ef81
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-06-22T01:31:32-07:00
Commit Message:
TSAGE: Bugfix for sound assert in scene 20
Changed paths:
engines/tsage/sound.cpp
diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp
index 2ecd889..980e080 100644
--- a/engines/tsage/sound.cpp
+++ b/engines/tsage/sound.cpp
@@ -1808,7 +1808,7 @@ void Sound::_soServiceTrackType0(int trackIndex, const byte *channelData) {
return;
int channelNum = _trkChannel[trackIndex];
- assert((channelNum >= 0) && (channelNum < SOUND_ARR_SIZE));
+ assert((channelNum >= -1) && (channelNum < SOUND_ARR_SIZE));
int chFlags = (channelNum == -1) ? 0 : _chFlags[channelNum];
int voiceNum = -1;
SoundDriver *driver = NULL;
Commit: 7ef6bea74ef157d57c75cf3d582c838dbc651b87
https://github.com/scummvm/scummvm/commit/7ef6bea74ef157d57c75cf3d582c838dbc651b87
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-06-22T01:31:33-07:00
Commit Message:
TSAGE: Clarified Globals::_sceneListeners as Globals::_sounds
Changed paths:
engines/tsage/globals.cpp
engines/tsage/globals.h
engines/tsage/scenes.cpp
diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp
index e54f107..34b26ec 100644
--- a/engines/tsage/globals.cpp
+++ b/engines/tsage/globals.cpp
@@ -94,8 +94,8 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface
_sceneObjects_queue.push_front(_sceneObjects);
_prevSceneOffset = Common::Point(-1, -1);
- _sceneListeners.push_back(&_soundHandler);
- _sceneListeners.push_back(&_sequenceManager._soundHandler);
+ _sounds.push_back(&_soundHandler);
+ _sounds.push_back(&_sequenceManager._soundHandler);
_scrollFollower = NULL;
_inventory = NULL;
@@ -148,7 +148,7 @@ void Globals::synchronize(Serializer &s) {
}
s.syncAsSint16LE(_dialogCenter.x); s.syncAsSint16LE(_dialogCenter.y);
- _sceneListeners.synchronize(s);
+ _sounds.synchronize(s);
for (int i = 0; i < 256; ++i)
s.syncAsByte(_flags[i]);
@@ -158,4 +158,13 @@ void Globals::synchronize(Serializer &s) {
s.syncAsSint32LE(_stripNum);
}
+void Globals::dispatchSound(ASound *obj) {
+ obj->dispatch();
+}
+
+void Globals::dispatchSounds() {
+ Common::for_each(_sounds.begin(), _sounds.end(), Globals::dispatchSound);
+}
+
+
} // end of namespace tSage
diff --git a/engines/tsage/globals.h b/engines/tsage/globals.h
index 3635fcc..7cfec71 100644
--- a/engines/tsage/globals.h
+++ b/engines/tsage/globals.h
@@ -34,6 +34,8 @@
namespace tSage {
class Globals : public SavedObject {
+private:
+ static void dispatchSound(ASound *obj);
public:
GfxSurface _screenSurface;
GfxManager _gfxManagerInstance;
@@ -56,7 +58,7 @@ public:
SoundManager _soundManager;
Common::Point _dialogCenter;
WalkRegions _walkRegions;
- SynchronizedList<EventHandler *> _sceneListeners;
+ SynchronizedList<ASound *> _sounds;
bool _flags[256];
Player _player;
ASound _soundHandler;
@@ -91,6 +93,7 @@ public:
GfxManager &gfxManager() { return **_gfxManagers.begin(); }
virtual Common::String getClassName() { return "Globals"; }
virtual void synchronize(Serializer &s);
+ void dispatchSounds();
};
extern Globals *_globals;
diff --git a/engines/tsage/scenes.cpp b/engines/tsage/scenes.cpp
index 4625661..a820a20 100644
--- a/engines/tsage/scenes.cpp
+++ b/engines/tsage/scenes.cpp
@@ -55,7 +55,7 @@ void SceneManager::checkScene() {
_nextSceneNumber = -1;
}
- Common::for_each(_globals->_sceneListeners.begin(), _globals->_sceneListeners.end(), SceneHandler::dispatchObject);
+ _globals->dispatchSounds();
}
void SceneManager::sceneChange() {
Commit: f67f069e3f830b824f1f61db03ebbe7bddb9c19f
https://github.com/scummvm/scummvm/commit/f67f069e3f830b824f1f61db03ebbe7bddb9c19f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-06-22T01:58:59-07:00
Commit Message:
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
Changed paths:
engines/tsage/sound.cpp
engines/tsage/sound.h
diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp
index 980e080..d57aa87 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 0da54fc..9a8cfb3 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();
More information about the Scummvm-git-logs
mailing list