diff options
author | Max Horn | 2003-12-15 20:33:40 +0000 |
---|---|---|
committer | Max Horn | 2003-12-15 20:33:40 +0000 |
commit | e2f851c8501f4ff8643ca6693cd0e3b103597ccb (patch) | |
tree | 9302244e8eaedab3d7a84693679295c08095d2fc /scumm | |
parent | 7fcfd00d1cbb54e54556d11d8946584f1628456e (diff) | |
download | scummvm-rg350-e2f851c8501f4ff8643ca6693cd0e3b103597ccb.tar.gz scummvm-rg350-e2f851c8501f4ff8643ca6693cd0e3b103597ccb.tar.bz2 scummvm-rg350-e2f851c8501f4ff8643ca6693cd0e3b103597ccb.zip |
Fix for bug #751670, thanks to MadMoose (I am not quite happy with the situation, but hey, at least this helps :-)
svn-id: r11662
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/script.cpp | 10 | ||||
-rw-r--r-- | scumm/scummvm.cpp | 5 | ||||
-rw-r--r-- | scumm/smush/smush_player.cpp | 1 |
3 files changed, 14 insertions, 2 deletions
diff --git a/scumm/script.cpp b/scumm/script.cpp index 6cf7673d3e..0058b24274 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -1130,6 +1130,16 @@ void ScummEngine::abortCutscene() { VAR(VAR_OVERRIDE) = 1; vm.cutScenePtr[vm.cutSceneStackPointer] = 0; + + // HACK to fix issues with SMUSH and the way it does keyboard handling. + // In particular, normally abortCutscene() is being called while no + // scripts are active. But SMUSH runs from *inside* the script engine. + // And it calls abortCutscene() if ESC is pressed... not good. + // Proper fix might be to let SMUSH/INSANE run from outside the script + // engine but that would require lots of changes and may actually have + // negative effects, too. So we cheat here, to fix bug #751670. + getScriptEntryPoint(); + } } diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp index 3aef8c2a92..7e2666e5cb 100644 --- a/scumm/scummvm.cpp +++ b/scumm/scummvm.cpp @@ -1824,6 +1824,8 @@ void ScummEngine::processKbd() { if (_lastKeyHit == KEY_ALL_SKIP) { // Skip cutscene if (_insaneState) { + // Eek this is literally shouting for trouble... + // Probably should set _lastKey to VAR_CUTSCENEEXIT_KEY instead! _videoFinished = true; return; } @@ -1873,7 +1875,8 @@ void ScummEngine::processKbd() { #else _videoFinished = true; #endif - } else + } + if (!_insaneState || _videoFinished) abortCutscene(); if (_version <= 2) { // Ensure that the input script also sees the key press. diff --git a/scumm/smush/smush_player.cpp b/scumm/smush/smush_player.cpp index 9c22bba519..e65cbba8e4 100644 --- a/scumm/smush/smush_player.cpp +++ b/scumm/smush/smush_player.cpp @@ -306,7 +306,6 @@ void SmushPlayer::deinit() { _scumm->_mixer->stopChannel(_IACTchannel); _scumm->_insaneState = false; - _scumm->abortCutscene(); if (_scumm->_imuseDigital) { _scumm->_imuseDigital->pause(false); } |