aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/driver_vga.cpp
diff options
context:
space:
mode:
authorSven Hesse2007-08-19 17:26:06 +0000
committerSven Hesse2007-08-19 17:26:06 +0000
commit2d15e4af78cf70fbc5063824b25b84af587b7d9b (patch)
tree65acbebc16aaf3dc7b082c47a0fb552102afe8a5 /engines/gob/driver_vga.cpp
parent5103e92410e92aff9eebd6d7fc7ed3203ebba1e7 (diff)
downloadscummvm-rg350-2d15e4af78cf70fbc5063824b25b84af587b7d9b.tar.gz
scummvm-rg350-2d15e4af78cf70fbc5063824b25b84af587b7d9b.tar.bz2
scummvm-rg350-2d15e4af78cf70fbc5063824b25b84af587b7d9b.zip
Checking in patch #1777241 by Uwe Ryssel (GOB: Some optimizations for slow computers)
svn-id: r28664
Diffstat (limited to 'engines/gob/driver_vga.cpp')
-rw-r--r--engines/gob/driver_vga.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/engines/gob/driver_vga.cpp b/engines/gob/driver_vga.cpp
index 13e6aca4a8..8b7f5105a8 100644
--- a/engines/gob/driver_vga.cpp
+++ b/engines/gob/driver_vga.cpp
@@ -113,18 +113,26 @@ void VGAVideoDriver::drawSprite(SurfaceDesc *source, SurfaceDesc *dest,
byte *srcPos = source->getVidMem() + (top * source->getWidth()) + left;
byte *destPos = dest->getVidMem() + (y * dest->getWidth()) + x;
- while (height--) {
- if (transp) {
+ if (transp)
+ {
+ while (height--) {
for (int16 i = 0; i < width; ++i) {
if (srcPos[i])
destPos[i] = srcPos[i];
- }
- } else
- for (int16 i = 0; i < width; ++i)
- destPos[i] = srcPos[i];
+ }
- srcPos += source->getWidth();
- destPos += dest->getWidth();
+ srcPos += source->getWidth();
+ destPos += dest->getWidth();
+ }
+ }
+ else
+ {
+ while (height--) {
+ memcpy(destPos, srcPos, width);
+
+ srcPos += source->getWidth();
+ destPos += dest->getWidth();
+ }
}
}