Fix for bug #751670, thanks to MadMoose (I am not quite happy with the situation, but hey, at least this helps :-)

svn-id: r11662
This commit is contained in:
Max Horn 2003-12-15 20:33:40 +00:00
parent 7fcfd00d1c
commit e2f851c850
3 changed files with 14 additions and 2 deletions

View File

@ -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();
}
}

View File

@ -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.

View File

@ -306,7 +306,6 @@ void SmushPlayer::deinit() {
_scumm->_mixer->stopChannel(_IACTchannel);
_scumm->_insaneState = false;
_scumm->abortCutscene();
if (_scumm->_imuseDigital) {
_scumm->_imuseDigital->pause(false);
}