aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/base/base_persistence_manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/wintermute/base/base_persistence_manager.cpp')
-rw-r--r--engines/wintermute/base/base_persistence_manager.cpp13
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;
}
}