[Scummvm-cvs-logs] CVS: scummvm/sound mixer.h,1.99,1.100 mixer.cpp,1.186,1.187

Max Horn fingolfin at users.sourceforge.net
Tue Mar 22 10:30:11 CET 2005


Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7394

Modified Files:
	mixer.h mixer.cpp 
Log Message:
Make sure SoundHandle's are inited

Index: mixer.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mixer.h,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -d -r1.99 -r1.100
--- mixer.h	12 Mar 2005 20:26:49 -0000	1.99
+++ mixer.h	22 Mar 2005 18:29:00 -0000	1.100
@@ -33,7 +33,14 @@
 class File;
 class OSystem;
 
-typedef uint32 SoundHandle;
+class SoundHandle {
+	friend class Channel;
+	friend class SoundMixer;
+	uint32 _val;
+public:
+	inline SoundHandle() : _val(0xFFFFFFFF) {}
+};
+
 
 class SoundMixer {
 public:

Index: mixer.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mixer.cpp,v
retrieving revision 1.186
retrieving revision 1.187
diff -u -d -r1.186 -r1.187
--- mixer.cpp	12 Mar 2005 20:26:48 -0000	1.186
+++ mixer.cpp	22 Mar 2005 18:29:02 -0000	1.187
@@ -166,7 +166,7 @@
 	}
 
 	_channels[index] = chan;
-	 chan->_handle = index + (_handleSeed * NUM_CHANNELS);
+	 chan->_handle._val = index + (_handleSeed * NUM_CHANNELS);
 	_handleSeed++;
 	if (handle) {
 		*handle = chan->_handle;
@@ -288,8 +288,8 @@
 	Common::StackLock lock(_mutex);
 
 	// Simply ignore stop requests for handles of sounds that already terminated
-	const int index = handle % NUM_CHANNELS;
-	if (!_channels[index] || _channels[index]->_handle != handle)
+	const int index = handle._val % NUM_CHANNELS;
+	if (!_channels[index] || _channels[index]->_handle._val != handle._val)
 		return;
 
 	delete _channels[index];
@@ -299,8 +299,8 @@
 void SoundMixer::setChannelVolume(SoundHandle handle, byte volume) {
 	Common::StackLock lock(_mutex);
 
-	const int index = handle % NUM_CHANNELS;
-	if (!_channels[index] || _channels[index]->_handle != handle)
+	const int index = handle._val % NUM_CHANNELS;
+	if (!_channels[index] || _channels[index]->_handle._val != handle._val)
 		return;
 
 	_channels[index]->setVolume(volume);
@@ -309,8 +309,8 @@
 void SoundMixer::setChannelBalance(SoundHandle handle, int8 balance) {
 	Common::StackLock lock(_mutex);
 
-	const int index = handle % NUM_CHANNELS;
-	if (!_channels[index] || _channels[index]->_handle != handle)
+	const int index = handle._val % NUM_CHANNELS;
+	if (!_channels[index] || _channels[index]->_handle._val != handle._val)
 		return;
 
 	_channels[index]->setBalance(balance);
@@ -327,8 +327,8 @@
 uint32 SoundMixer::getSoundElapsedTime(SoundHandle handle) {
 	Common::StackLock lock(_mutex);
 
-	const int index = handle % NUM_CHANNELS;
-	if (!_channels[index] || _channels[index]->_handle != handle)
+	const int index = handle._val % NUM_CHANNELS;
+	if (!_channels[index] || _channels[index]->_handle._val != handle._val)
 		return 0;
 
 	return _channels[index]->getElapsedTime();
@@ -352,8 +352,8 @@
 	Common::StackLock lock(_mutex);
 
 	// Simply ignore pause/unpause requests for handles of sound that alreayd terminated
-	const int index = handle % NUM_CHANNELS;
-	if (!_channels[index] || _channels[index]->_handle != handle)
+	const int index = handle._val % NUM_CHANNELS;
+	if (!_channels[index] || _channels[index]->_handle._val != handle._val)
 		return;
 
 	_channels[index]->pause(paused);
@@ -368,8 +368,8 @@
 }
 
 bool SoundMixer::isSoundHandleActive(SoundHandle handle) {
-	const int index = handle % NUM_CHANNELS;
-	return _channels[index] && _channels[index]->_handle == handle;
+	const int index = handle._val % NUM_CHANNELS;
+	return _channels[index] && _channels[index]->_handle._val == handle._val;
 }
 
 bool SoundMixer::hasActiveChannelOfType(SoundType type) {





More information about the Scummvm-git-logs mailing list