[Scummvm-cvs-logs] CVS: scummvm/scumm imuse_digi.cpp,1.46,1.47 sound.cpp,1.246,1.247 player_v3a.cpp,1.7,1.8

Max Horn fingolfin at users.sourceforge.net
Wed Sep 10 05:54:07 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv18561/scumm

Modified Files:
	imuse_digi.cpp sound.cpp player_v3a.cpp 
Log Message:
added refCon parameter to timer class

Index: imuse_digi.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi.cpp,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -d -r1.46 -r1.47
--- imuse_digi.cpp	8 Sep 2003 17:06:44 -0000	1.46
+++ imuse_digi.cpp	10 Sep 2003 12:43:53 -0000	1.47
@@ -689,11 +689,9 @@
 	return ret_sound;
 }
 
-void IMuseDigital::timer_handler(void *engine) {
-	// Avoid race condition
-	Scumm *scumm = (Scumm *)engine;
-	if (scumm && scumm->_imuseDigital)
-		scumm->_imuseDigital->musicTimer();
+void IMuseDigital::timer_handler(void *refCon) {
+	IMuseDigital *imuseDigital = (IMuseDigital *)refCon;
+	imuseDigital->musicTimer();
 }
 
 IMuseDigital::IMuseDigital(Scumm *scumm)
@@ -702,7 +700,7 @@
 	for (int l = 0; l < MAX_DIGITAL_CHANNELS; l++) {
 		_channel[l]._mixerChannel = 0;
 	}
-	_scumm->_timer->installProcedure(timer_handler, 200000);
+	_scumm->_timer->installProcedure(timer_handler, 200000, this);
 	_pause = false;
 }
 
@@ -717,7 +715,7 @@
 void IMuseDigital::musicTimer() {
 	int l = 0;
 
-	if (_pause)
+	if (_pause || !_scumm)
 		return;
 
 	for (l = 0; l < MAX_DIGITAL_CHANNELS;l ++) {

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.246
retrieving revision 1.247
diff -u -d -r1.246 -r1.247
--- sound.cpp	9 Sep 2003 17:50:20 -0000	1.246
+++ sound.cpp	10 Sep 2003 12:43:53 -0000	1.247
@@ -1046,8 +1046,9 @@
 	return s_size;
 }
 
-static void music_handler (void *engine) {
-	g_scumm->_sound->bundleMusicHandler(g_scumm);
+static void music_handler(void *refCon) {
+	Sound *sound = (Sound *)refCon;
+	sound->bundleMusicHandler(g_scumm);
 }
 
 void Sound::playBundleMusic(const char *song) {
@@ -1088,7 +1089,7 @@
 		_bundleMusicTrack = 0;
 		_numberSamplesBundleMusic = _bundle->getNumberOfMusicSamplesByName(song);
 		_nameBundleMusic = song;
-		_scumm->_timer->installProcedure(&music_handler, 1000000);
+		_scumm->_timer->installProcedure(&music_handler, 1000000, this);
 		return;
 	}
 	if (strcmp(_nameBundleMusic, song) != 0) {
@@ -1443,8 +1444,8 @@
 // We use a real timer in an attempt to get better sync with CD tracks. This is
 // necessary for games like Loom CD.
 
-static void cd_timer_handler(void *ptr) {
-	Scumm *scumm = (Scumm *) ptr;
+static void cd_timer_handler(void *refCon) {
+	Scumm *scumm = (Scumm *)refCon;
 
 	// FIXME: Turn off the timer when it's no longer needed. In theory, it
 	// should be possible to check with pollCD(), but since CD sound isn't
@@ -1467,7 +1468,7 @@
 		timer_interval = 101;
 
 	_scumm->_timer->releaseProcedure(&cd_timer_handler);
-	_scumm->_timer->installProcedure(&cd_timer_handler, 1000 * timer_interval);
+	_scumm->_timer->installProcedure(&cd_timer_handler, 1000 * timer_interval, _scumm);
 }
 
 void Sound::stopCDTimer() {

Index: player_v3a.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v3a.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- player_v3a.cpp	8 Sep 2003 11:29:57 -0000	1.7
+++ player_v3a.cpp	10 Sep 2003 12:43:53 -0000	1.8
@@ -56,7 +56,7 @@
 
 	_maxvol = 255;
 
-	scumm->_timer->installProcedure(timerHandler, 16666);
+	scumm->_timer->installProcedure(timerHandler, 16666, this);
 
 	_isinit = false;
 }
@@ -143,6 +143,7 @@
 }
 
 void Player_V3A::startSound(int nr) {
+	assert(_scumm);
 	byte *data = _scumm->getResourceAddress(rtSound, nr);
 	assert(data);
 
@@ -228,10 +229,10 @@
 	}
 }
 
-void Player_V3A::timerHandler(void *engine) {
-	Scumm *scumm = (Scumm *)engine;
-	if (scumm && scumm->_playerV3A)
-		scumm->_playerV3A->playMusic();
+void Player_V3A::timerHandler(void *refCon) {
+	Player_V3A *player = (Player_V3A *)refCon;
+	assert(player);
+	player->playMusic();
 }
 
 void Player_V3A::playMusic() {





More information about the Scummvm-git-logs mailing list