From a6bdec5ca5dd92c4613b0e684f838326ec89939b Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Thu, 3 Oct 2013 23:48:14 +0200 Subject: AVALANCHE: Don't refresh screen after every event in scroll mode --- engines/avalanche/dialogs.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'engines') diff --git a/engines/avalanche/dialogs.cpp b/engines/avalanche/dialogs.cpp index fd2e47b34d..0c90d12293 100644 --- a/engines/avalanche/dialogs.cpp +++ b/engines/avalanche/dialogs.cpp @@ -128,15 +128,18 @@ void Dialogs::scrollModeNormal() { _vm->_graphics->showScroll(); Common::Event event; - while (!_vm->shouldQuit()) { + bool escape = false; + while (!_vm->shouldQuit() && !escape) { _vm->_graphics->refreshScreen(); - - _vm->getEvent(event); - if ((event.type == Common::EVENT_LBUTTONUP) || - ((event.type == Common::EVENT_KEYDOWN) && ((event.kbd.keycode == Common::KEYCODE_ESCAPE) || - (event.kbd.keycode == Common::KEYCODE_RETURN) || (event.kbd.keycode == Common::KEYCODE_HASH) || - (event.kbd.keycode == Common::KEYCODE_PLUS)))) - break; + while (_vm->getEvent(event)) { + if ((event.type == Common::EVENT_LBUTTONUP) || + ((event.type == Common::EVENT_KEYDOWN) && ((event.kbd.keycode == Common::KEYCODE_ESCAPE) || + (event.kbd.keycode == Common::KEYCODE_RETURN) || (event.kbd.keycode == Common::KEYCODE_HASH) || + (event.kbd.keycode == Common::KEYCODE_PLUS)))) { + escape = true; + break; + } + } } _vm->_graphics->restoreScreen(); -- cgit v1.2.3 From 97f26f679408fe8d9196ea36924c3e24adc11d3e Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Thu, 3 Oct 2013 23:48:56 +0200 Subject: AVALANCHE: Use memcpy in refreshScreen --- engines/avalanche/graphics.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'engines') diff --git a/engines/avalanche/graphics.cpp b/engines/avalanche/graphics.cpp index 5e17dcda3e..23807ac45a 100644 --- a/engines/avalanche/graphics.cpp +++ b/engines/avalanche/graphics.cpp @@ -677,10 +677,8 @@ void GraphicManager::drawChar(byte ander, int x, int y, Color color) { void GraphicManager::refreshScreen() { // These cycles are for doubling the screen height. for (uint16 y = 0; y < _screen.h / 2; y++) { - for (uint16 x = 0; x < _screen.w; x++) { - for (int j = 0; j < 2; j++) - *(byte *)_screen.getBasePtr(x, y * 2 + j) = *(byte *)_surface.getBasePtr(x, y); - } + memcpy(_screen.getBasePtr(0, y * 2), _surface.getBasePtr(0, y), _screen.w); + memcpy(_screen.getBasePtr(0, y * 2 + 1), _surface.getBasePtr(0, y), _screen.w); } // Now we copy the stretched picture to the screen. g_system->copyRectToScreen(_screen.getPixels(), _screen.pitch, 0, 0, kScreenWidth, kScreenHeight * 2); -- cgit v1.2.3