[Scummvm-cvs-logs] SF.net SVN: scummvm: [26257] scummvm/trunk/engines/scumm

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Tue Mar 20 20:06:38 CET 2007


Revision: 26257
          http://scummvm.svn.sourceforge.net/scummvm/?rev=26257&view=rev
Author:   fingolfin
Date:     2007-03-20 12:06:37 -0700 (Tue, 20 Mar 2007)

Log Message:
-----------
Undoing my previous (upon closer review, bogus) change to IMuseDigital::refreshScripts -- the problem is a bit deeper. Sorry for the noise :-(

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp
    scummvm/trunk/engines/scumm/scumm.cpp

Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp	2007-03-20 19:04:51 UTC (rev 26256)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp	2007-03-20 19:06:37 UTC (rev 26257)
@@ -189,20 +189,16 @@
 }
 
 void IMuseDigital::refreshScripts() {
-	bool found = false;
+	Common::StackLock lock(_mutex, "IMuseDigital::refreshScripts()");
 	debug(5, "refreshScripts()");
-	{
-		Common::StackLock lock(_mutex, "IMuseDigital::refreshScripts()");
-		for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
-			Track *track = _track[l];
-			if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
-				found = true;
-			}
+	bool found = false;
+	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+		Track *track = _track[l];
+		if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
+			found = true;
 		}
 	}
-	
-	// Make sure parseScriptCmds is *not* called while the mutex is locked
-	// (else race conditions can occur).
+
 	if (!found && (_curMusicSeq != 0)) {
 		debug(5, "refreshScripts() Start Sequence");
 		parseScriptCmds(0x1001, 0, 0, 0, 0, 0, 0, 0);

Modified: scummvm/trunk/engines/scumm/scumm.cpp
===================================================================
--- scummvm/trunk/engines/scumm/scumm.cpp	2007-03-20 19:04:51 UTC (rev 26256)
+++ scummvm/trunk/engines/scumm/scumm.cpp	2007-03-20 19:06:37 UTC (rev 26257)
@@ -2088,6 +2088,7 @@
 	ScummEngine_v6::scummLoop_handleSound();
 	if (_imuseDigital) {
 		_imuseDigital->flushTracks();
+		// In CoMI and the full (non-demo) version of The Dig, also invoke IMuseDigital::refreshScripts 
 		if ( ((_game.id == GID_DIG) && (!(_game.features & GF_DEMO))) || (_game.id == GID_CMI) )
 			_imuseDigital->refreshScripts();
 	}


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list