diff options
author | Max Horn | 2007-03-20 19:06:37 +0000 |
---|---|---|
committer | Max Horn | 2007-03-20 19:06:37 +0000 |
commit | d0c30bfd9ab8a9411d3c86ee0a3fce0714f6c993 (patch) | |
tree | 770a2c84277dfc31fcbc07d7156c92ef857c374d | |
parent | 2c0f341ef8164ea9da2788762a3f727fe20c4375 (diff) | |
download | scummvm-rg350-d0c30bfd9ab8a9411d3c86ee0a3fce0714f6c993.tar.gz scummvm-rg350-d0c30bfd9ab8a9411d3c86ee0a3fce0714f6c993.tar.bz2 scummvm-rg350-d0c30bfd9ab8a9411d3c86ee0a3fce0714f6c993.zip |
Undoing my previous (upon closer review, bogus) change to IMuseDigital::refreshScripts -- the problem is a bit deeper. Sorry for the noise :-(
svn-id: r26257
-rw-r--r-- | engines/scumm/imuse_digi/dimuse_script.cpp | 18 | ||||
-rw-r--r-- | engines/scumm/scumm.cpp | 1 |
2 files changed, 8 insertions, 11 deletions
diff --git a/engines/scumm/imuse_digi/dimuse_script.cpp b/engines/scumm/imuse_digi/dimuse_script.cpp index 4da854ad19..1a257c905f 100644 --- a/engines/scumm/imuse_digi/dimuse_script.cpp +++ b/engines/scumm/imuse_digi/dimuse_script.cpp @@ -189,20 +189,16 @@ void IMuseDigital::flushTracks() { } 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); diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 2fc0eda925..5298593a1e 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -2088,6 +2088,7 @@ void ScummEngine_v7::scummLoop_handleSound() { 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(); } |