aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sword1/animation.cpp5
-rw-r--r--engines/sword1/screen.cpp4
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);
}
}