mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-13 21:31:53 +00:00
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:
parent
7fcfd00d1c
commit
e2f851c850
@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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.
|
||||
|
@ -306,7 +306,6 @@ void SmushPlayer::deinit() {
|
||||
_scumm->_mixer->stopChannel(_IACTchannel);
|
||||
|
||||
_scumm->_insaneState = false;
|
||||
_scumm->abortCutscene();
|
||||
if (_scumm->_imuseDigital) {
|
||||
_scumm->_imuseDigital->pause(false);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user