[Scummvm-cvs-logs] CVS: scummvm/scumm/smush smush_player.cpp,1.41,1.42

Max Horn fingolfin at users.sourceforge.net
Tue Jul 1 16:51:05 CEST 2003


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

Modified Files:
	smush_player.cpp 
Log Message:
fix for the 'invalid seeks' that sometimes occured at the end of smush playback (well I hope - at least now I can't reproduce the problem anymore with my testcases)

Index: smush_player.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_player.cpp,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- smush_player.cpp	22 Jun 2003 23:09:56 -0000	1.41
+++ smush_player.cpp	1 Jul 2003 23:50:36 -0000	1.42
@@ -257,9 +257,11 @@
 }
 
 void SmushPlayer::deinit() {
+	_scumm->_timer->releaseProcedure(&timerCallback);
 	_scumm->_smushPlay = false;
+	// In case the timerCallback is active right now, we loop till it finishes.
+	// Note: even this still leaves a window for race conditions to occur.
 	while (_smushProcessFrame) {}
-	_scumm->_timer->releaseProcedure(&timerCallback);
 
 	for (int i = 0; i < 5; i++) {
 		if (_sf[i]) {
@@ -849,11 +851,11 @@
 }
 
 void SmushPlayer::parseNextFrame() {
-	Chunk *sub = _base->subBlock();
 	if (_base->eof()) {
 		_scumm->_videoFinished = true;
 		return;
 	}
+	Chunk *sub = _base->subBlock();
 
 	switch(sub->getType()) {
 		case TYPE_FRME:





More information about the Scummvm-git-logs mailing list