From 74154f2101c55c261ad0113923fa9beafcbd387b Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sat, 6 Feb 2016 22:44:43 +0100 Subject: SCI: Properly use pitch in GfxScreen::copyFromScreen. --- engines/sci/graphics/screen.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'engines/sci/graphics/screen.cpp') diff --git a/engines/sci/graphics/screen.cpp b/engines/sci/graphics/screen.cpp index 4cd6344600..a76f462c7b 100644 --- a/engines/sci/graphics/screen.cpp +++ b/engines/sci/graphics/screen.cpp @@ -270,9 +270,21 @@ void GfxScreen::copyToScreen() { } void GfxScreen::copyFromScreen(byte *buffer) { - // TODO this ignores the pitch Graphics::Surface *screen = g_system->lockScreen(); - memcpy(buffer, screen->getPixels(), _displayPixels); + + if (screen->pitch == _displayWidth) { + memcpy(buffer, screen->getPixels(), _displayPixels); + } else { + const byte *src = (const byte *)screen->getPixels(); + uint height = _displayHeight; + + while (height--) { + memcpy(buffer, src, _displayWidth); + buffer += _displayWidth; + src += screen->pitch; + } + } + g_system->unlockScreen(); } -- cgit v1.2.3