diff options
-rw-r--r-- | engines/sword1/animation.cpp | 5 | ||||
-rw-r--r-- | engines/sword1/screen.cpp | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/engines/sword1/animation.cpp b/engines/sword1/animation.cpp index 43de05b155..9d196d39be 100644 --- a/engines/sword1/animation.cpp +++ b/engines/sword1/animation.cpp @@ -191,7 +191,8 @@ void MoviePlayer::play(void) { _snd->playInputStream(Audio::Mixer::kSFXSoundType, &_bgSoundHandle, _bgSoundStream); } _currentFrame = 0; - while (decodeFrame()) { + bool terminated = false; + while (!terminated && decodeFrame()) { processFrame(); syncFrame(); updateScreen(); @@ -205,7 +206,7 @@ void MoviePlayer::play(void) { case OSystem::EVENT_KEYDOWN: if (event.kbd.keycode == 27) { _snd->stopHandle(_bgSoundHandle); - return; + terminated = true; } break; case OSystem::EVENT_QUIT: diff --git a/engines/sword1/screen.cpp b/engines/sword1/screen.cpp index 57a9b6137c..ba04d03d84 100644 --- a/engines/sword1/screen.cpp +++ b/engines/sword1/screen.cpp @@ -68,7 +68,9 @@ void Screen::clearScreen(void) { if (_screenBuf) { _fullRefresh = true; memset(_screenBuf, 0, _scrnSizeX * _scrnSizeY); - _system->copyRectToScreen(_screenBuf, 640, 0, 0, 640, 480); + // The buffer isn't necessarily big enough to clear the entire + // screen, so the menu areas are unaffected. For now. + _system->copyRectToScreen(_screenBuf, SCREEN_WIDTH, 0, 40, SCREEN_WIDTH, SCREEN_DEPTH); } } |