From 426dda70e1d83d32d5c70ff761f1301bbc4c51ed Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Thu, 24 Jan 2013 17:14:51 +0100 Subject: WINTERMUTE: Don't scale 2Bpp images with code aimed at 4Bpp --- engines/wintermute/base/base_persistence_manager.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'engines/wintermute/base') 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; } } -- cgit v1.2.3