diff options
-rw-r--r-- | insane.cpp | 13 | ||||
-rw-r--r-- | scumm.h | 2 | ||||
-rw-r--r-- | scummvm.cpp | 5 | ||||
-rw-r--r-- | sdl.cpp | 2 |
4 files changed, 17 insertions, 5 deletions
diff --git a/insane.cpp b/insane.cpp index 3a89efbb07..75a065e0ae 100644 --- a/insane.cpp +++ b/insane.cpp @@ -414,7 +414,7 @@ void codec37(CodecData *cd, PersistentCodecData37 *pcd) { case 1: case 4: - printf("code %d", cd->src[0]); + warning("code %d", cd->src[0]); return; default: @@ -596,6 +596,9 @@ void SmushPlayer::startVideo(short int arg, byte* videoFile) fileSize=fileReadBE32(); + sm->videoFinished = 0; + sm->_insaneState = 1; + do { if(ftell(_in)>=fileSize ) return; @@ -613,10 +616,12 @@ void SmushPlayer::startVideo(short int arg, byte* videoFile) updateScreen(sm); sm->delta = sm->_system->waitTick(sm->delta); + + sm->processKbd(); - if(sm->_keyPressed == sm->_vars[sm->VAR_CUTSCENEEXIT_KEY]) - return; - } while (1); + } while (!sm->videoFinished); + + sm->_insaneState = 0; } @@ -591,6 +591,8 @@ public: /* _insane vars */ int _insaneFlag; + int _insaneState; + int videoFinished; void scummInit(); diff --git a/scummvm.cpp b/scummvm.cpp index 5fb8785ca9..ee128c89b5 100644 --- a/scummvm.cpp +++ b/scummvm.cpp @@ -788,7 +788,10 @@ void Scumm::processKbd() { } if (_lastKeyHit==_vars[VAR_CUTSCENEEXIT_KEY]) { - exitCutscene(); + if (_insaneState) { + videoFinished=1; + } else + exitCutscene(); } else if (_lastKeyHit==_vars[VAR_SAVELOADDIALOG_KEY]) { if ( _features & GF_AFTER_V7) runScript(_vars[VAR_UNK_SCRIPT],0,0,0); @@ -1087,6 +1087,8 @@ int main(int argc, char* argv[]) { scumm->_insaneFlag = 12; + scumm->_insaneState = 0; + /* */ scumm->_fullScreen = detector._fullScreen; |