[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse_script.cpp,1.15,1.16

Pawel Kolodziejski aquadran at users.sourceforge.net
Sun Jun 20 13:14:01 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1173/scummvm/scumm/imuse_digi

Modified Files:
	dimuse_script.cpp 
Log Message:
added exception for insane sounds to prevent deadlock

Index: dimuse_script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_script.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- dimuse_script.cpp	20 Jun 2004 19:19:53 -0000	1.15
+++ dimuse_script.cpp	20 Jun 2004 20:13:01 -0000	1.16
@@ -163,19 +163,23 @@
 	debug(5, "flushTracks()");
 	for (int l = 0; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) {
 		Track *track = _track[l];
-		if (track->used && track->readyToRemove) {
-			if (track->stream) {
+		if (track->used &&
+			(track->readyToRemove || (!_vm->_videoFinished && track->toBeRemoved))) {
+			if ((track->stream) && (!track->stream->endOfStream())) {
 	 			track->stream->finish();
-				track->stream = NULL;
+			} else if ((track->stream) && (track->stream->endOfStream())) {
 				_vm->_mixer->stopHandle(track->handle);
+				delete track->stream;
+				track->stream = NULL;
 				_sound->closeSound(track->soundHandle);
 				track->soundHandle = NULL;
+				track->used = false;
 			} else if (track->stream2) {
 				_vm->_mixer->stopHandle(track->handle);
 				delete track->stream2;
 				track->stream2 = NULL;
+				track->used = false;
 			}
-			track->used = false;
 		}
 	}
 }
@@ -385,4 +389,3 @@
 }
 
 } // End of namespace Scumm
-





More information about the Scummvm-git-logs mailing list