[Scummvm-cvs-logs] CVS: scummvm/sound mixer.cpp,1.37,1.38

Max Horn fingolfin at users.sourceforge.net
Fri May 23 09:48:12 CEST 2003


Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1:/tmp/cvs-serv25309

Modified Files:
	mixer.cpp 
Log Message:
fixed nasty deadlock I recently introduced

Index: mixer.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mixer.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- mixer.cpp	22 May 2003 21:34:20 -0000	1.37
+++ mixer.cpp	23 May 2003 16:47:45 -0000	1.38
@@ -153,26 +153,25 @@
 
 void SoundMixer::mix(int16 *buf, uint len) {
 	_syst->lock_mutex(_mutex);
-	if (_paused) {
-		memset(buf, 0, 2 * len * sizeof(int16));
-		return;
-	}
-	
-	if (_premixProc) {
+		
+	if (_premixProc && !_paused) {
 		int i;
 		_premixProc(_premixParam, buf, len);
 		for (i = (len - 1); i >= 0; i--) {
 			buf[2 * i] = buf[2 * i + 1] = buf[i];
 		}
 	} else {
-		// no premixer available, zero the buf out
+		//  zero the buf out
 		memset(buf, 0, 2 * len * sizeof(int16));
 	}
 
-	/* now mix all channels */
-	for (int i = 0; i != NUM_CHANNELS; i++)
-		if (_channels[i])
-			_channels[i]->mix(buf, len);
+	if (!_paused) {
+		/* now mix all channels */
+		for (int i = 0; i != NUM_CHANNELS; i++)
+			if (_channels[i])
+				_channels[i]->mix(buf, len);
+	}
+	
 	_syst->unlock_mutex(_mutex);
 }
 





More information about the Scummvm-git-logs mailing list