[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