[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