From 7afd163b6e24e025edf16b33a137085550819ed0 Mon Sep 17 00:00:00 2001 From: Joel Teichroeb Date: Sat, 31 Mar 2012 15:03:56 -0700 Subject: [PATCH] GRIM: Fix a memory leak with tinygl bitmaps. Fixes #580 --- engines/grim/bitmap.cpp | 2 +- engines/grim/gfx_tinygl.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/engines/grim/bitmap.cpp b/engines/grim/bitmap.cpp index 510bd02c2a7..c07c0517549 100644 --- a/engines/grim/bitmap.cpp +++ b/engines/grim/bitmap.cpp @@ -240,10 +240,10 @@ BitmapData::BitmapData() : BitmapData::~BitmapData() { _keepData = false; - freeData(); if (_loaded) { g_driver->destroyBitmap(this); } + freeData(); if (_bitmaps) { if (_bitmaps->contains(_fname)) { _bitmaps->erase(_fname); diff --git a/engines/grim/gfx_tinygl.cpp b/engines/grim/gfx_tinygl.cpp index f04505fd3c7..b6915dc7bbf 100644 --- a/engines/grim/gfx_tinygl.cpp +++ b/engines/grim/gfx_tinygl.cpp @@ -849,6 +849,10 @@ void GfxTinyGL::drawBitmap(const Bitmap *bitmap, int x, int y) { } void GfxTinyGL::destroyBitmap(BitmapData *bitmap) { + for (int pic = 0; pic < bitmap->_numImages; pic++) { + if (bitmap->_data) + bitmap->_data[pic].free(); + } delete[] (BlitImage*)bitmap->_texIds; }