diff options
author | Einar Johan Trøan Sømåen | 2013-01-24 17:14:51 +0100 |
---|---|---|
committer | Einar Johan Trøan Sømåen | 2013-01-24 17:14:51 +0100 |
commit | 426dda70e1d83d32d5c70ff761f1301bbc4c51ed (patch) | |
tree | baa649cbbb9e06fdda500827137ddc210ae37143 /engines/wintermute/base/base_persistence_manager.cpp | |
parent | a1a63546879927c6316165f86dfe61dfb13cb376 (diff) | |
download | scummvm-rg350-426dda70e1d83d32d5c70ff761f1301bbc4c51ed.tar.gz scummvm-rg350-426dda70e1d83d32d5c70ff761f1301bbc4c51ed.tar.bz2 scummvm-rg350-426dda70e1d83d32d5c70ff761f1301bbc4c51ed.zip |
WINTERMUTE: Don't scale 2Bpp images with code aimed at 4Bpp
Diffstat (limited to 'engines/wintermute/base/base_persistence_manager.cpp')
-rw-r--r-- | engines/wintermute/base/base_persistence_manager.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/engines/wintermute/base/base_persistence_manager.cpp b/engines/wintermute/base/base_persistence_manager.cpp index 1e2c06e5ef..accb0a8fd3 100644 --- a/engines/wintermute/base/base_persistence_manager.cpp +++ b/engines/wintermute/base/base_persistence_manager.cpp @@ -166,16 +166,17 @@ void BasePersistenceManager::getSaveStateDesc(int slot, SaveStateDescriptor &des } if (thumbSize > 0) { - Common::MemoryReadStream thumbStream(thumbData, thumbSize); + Common::MemoryReadStream thumbStream(thumbData, thumbSize, DisposeAfterUse::NO); Graphics::BitmapDecoder bmpDecoder; if (bmpDecoder.loadStream(thumbStream)) { - Graphics::Surface *surf = NULL; - surf = bmpDecoder.getSurface()->convertTo(g_system->getOverlayFormat()); - TransparentSurface *scaleableSurface = new TransparentSurface(*surf, false); + const Graphics::Surface *bmpSurface = bmpDecoder.getSurface(); + TransparentSurface *scaleableSurface = new TransparentSurface(*bmpSurface, false); Graphics::Surface *scaled = scaleableSurface->scale(kThumbnailWidth, kThumbnailHeight2); - desc.setThumbnail(scaled); + Graphics::Surface *thumb = scaled->convertTo(g_system->getOverlayFormat()); + desc.setThumbnail(thumb); delete scaleableSurface; - delete surf; + scaled->free(); + delete scaled; } } |