diff options
-rw-r--r-- | engines/sci/console.cpp | 9 | ||||
-rw-r--r-- | engines/sci/engine/kgraphics.cpp | 9 |
2 files changed, 12 insertions, 6 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp index 3737ccd59e..6845e7282e 100644 --- a/engines/sci/console.cpp +++ b/engines/sci/console.cpp @@ -244,8 +244,9 @@ void Console::postEnter() { if (videoDecoder && videoDecoder->loadFile(_videoFile)) { uint16 x = (g_system->getWidth() - videoDecoder->getWidth()) / 2; uint16 y = (g_system->getHeight() - videoDecoder->getHeight()) / 2; + bool skipVideo = false; - while (!g_engine->shouldQuit() && !videoDecoder->endOfVideo()) { + while (!g_engine->shouldQuit() && !videoDecoder->endOfVideo() && !skipVideo) { if (videoDecoder->needsUpdate()) { Graphics::Surface *frame = videoDecoder->decodeNextFrame(); if (frame) { @@ -259,8 +260,10 @@ void Console::postEnter() { } Common::Event event; - while (g_system->getEventManager()->pollEvent(event)) - ; + while (g_system->getEventManager()->pollEvent(event)) { + if ((event.type == Common::EVENT_KEYDOWN && event.kbd.keycode == Common::KEYCODE_ESCAPE) || event.type == Common::EVENT_LBUTTONUP) + skipVideo = true; + } g_system->delayMillis(10); } diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index 424d5049e5..5c84ddfb49 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -1160,8 +1160,9 @@ reg_t kShowMovie(EngineState *s, int argc, reg_t *argv) { if (videoDecoder) { uint16 x = (screenWidth - videoDecoder->getWidth()) / 2; uint16 y = (screenHeight - videoDecoder->getHeight()) / 2; + bool skipVideo = false; - while (!g_engine->shouldQuit() && !videoDecoder->endOfVideo()) { + while (!g_engine->shouldQuit() && !videoDecoder->endOfVideo() && !skipVideo) { if (videoDecoder->needsUpdate()) { Graphics::Surface *frame = videoDecoder->decodeNextFrame(); if (frame) { @@ -1175,8 +1176,10 @@ reg_t kShowMovie(EngineState *s, int argc, reg_t *argv) { } Common::Event event; - while (g_system->getEventManager()->pollEvent(event)) - ; + while (g_system->getEventManager()->pollEvent(event)) { + if ((event.type == Common::EVENT_KEYDOWN && event.kbd.keycode == Common::KEYCODE_ESCAPE) || event.type == Common::EVENT_LBUTTONUP) + skipVideo = true; + } g_system->delayMillis(10); } |