Plugging leaks

svn-id: r35355
This commit is contained in:
Sven Hesse 2008-12-14 04:33:28 +00:00
parent 4d79c4c9b6
commit 5f8323bd50
10 changed files with 28 additions and 25 deletions

View file

@ -134,6 +134,11 @@ Draw::Draw(GobEngine *vm) : _vm(vm) {
_scrollOffsetY = 0; _scrollOffsetY = 0;
} }
Draw::~Draw() {
for (int i = 0; i < 8; i++)
delete _fonts[i];
}
void Draw::invalidateRect(int16 left, int16 top, int16 right, int16 bottom) { void Draw::invalidateRect(int16 left, int16 top, int16 right, int16 bottom) {
if (_renderFlags & RENDERFLAG_NOINVALIDATE) { if (_renderFlags & RENDERFLAG_NOINVALIDATE) {
_vm->_video->dirtyRectsAll(); _vm->_video->dirtyRectsAll();

View file

@ -168,7 +168,7 @@ public:
virtual void spriteOperation(int16 operation) = 0; virtual void spriteOperation(int16 operation) = 0;
Draw(GobEngine *vm); Draw(GobEngine *vm);
virtual ~Draw() {} virtual ~Draw();
protected: protected:
GobEngine *_vm; GobEngine *_vm;

View file

@ -209,11 +209,6 @@ void Init::initGame(const char *totName) {
} }
for (int i = 0; i < 4; i++) {
if (_vm->_draw->_fonts[i] != 0)
_vm->_util->freeFont(_vm->_draw->_fonts[i]);
}
delete _palDesc; delete _palDesc;
_vm->_dataIO->closeDataFile(); _vm->_dataIO->closeDataFile();
_vm->_video->initPrimary(-1); _vm->_video->initPrimary(-1);

View file

@ -2170,8 +2170,7 @@ bool Inter_v1::o1_loadFont(OpFuncParams &params) {
evalExpr(0); evalExpr(0);
index = load16(); index = load16();
if (_vm->_draw->_fonts[index]) delete _vm->_draw->_fonts[index];
_vm->_util->freeFont(_vm->_draw->_fonts[index]);
_vm->_draw->animateCursor(4); _vm->_draw->animateCursor(4);
if (_vm->_game->_extHandle >= 0) if (_vm->_game->_extHandle >= 0)
@ -2189,9 +2188,7 @@ bool Inter_v1::o1_freeFont(OpFuncParams &params) {
int16 index; int16 index;
index = load16(); index = load16();
if (_vm->_draw->_fonts[index]) delete _vm->_draw->_fonts[index];
_vm->_util->freeFont(_vm->_draw->_fonts[index]);
_vm->_draw->_fonts[index] = 0; _vm->_draw->_fonts[index] = 0;
return false; return false;
} }

View file

@ -852,7 +852,7 @@ void Inter_v5::o5_getSystemCDSpeed(OpGobParams &params) {
_vm->_draw->drawString("100 %", 402, 89, 112, 144, 0, _vm->_draw->_backSurface, font); _vm->_draw->drawString("100 %", 402, 89, 112, 144, 0, _vm->_draw->_backSurface, font);
_vm->_draw->forceBlit(); _vm->_draw->forceBlit();
_vm->_util->freeFont(font); delete font;
} }
} }
@ -866,7 +866,7 @@ void Inter_v5::o5_getSystemRAM(OpGobParams &params) {
_vm->_draw->drawString("100 %", 402, 168, 112, 144, 0, _vm->_draw->_backSurface, font); _vm->_draw->drawString("100 %", 402, 168, 112, 144, 0, _vm->_draw->_backSurface, font);
_vm->_draw->forceBlit(); _vm->_draw->forceBlit();
_vm->_util->freeFont(font); delete font;
} }
} }
@ -880,7 +880,7 @@ void Inter_v5::o5_getSystemCPUSpeed(OpGobParams &params) {
_vm->_draw->drawString("100 %", 402, 248, 112, 144, 0, _vm->_draw->_backSurface, font); _vm->_draw->drawString("100 %", 402, 248, 112, 144, 0, _vm->_draw->_backSurface, font);
_vm->_draw->forceBlit(); _vm->_draw->forceBlit();
_vm->_util->freeFont(font); delete font;
} }
} }
@ -894,7 +894,7 @@ void Inter_v5::o5_getSystemDrawSpeed(OpGobParams &params) {
_vm->_draw->drawString("100 %", 402, 326, 112, 144, 0, _vm->_draw->_backSurface, font); _vm->_draw->drawString("100 %", 402, 326, 112, 144, 0, _vm->_draw->_backSurface, font);
_vm->_draw->forceBlit(); _vm->_draw->forceBlit();
_vm->_util->freeFont(font); delete font;
} }
} }
@ -908,7 +908,7 @@ void Inter_v5::o5_totalSystemSpecs(OpGobParams &params) {
_vm->_draw->drawString("100 %", 402, 405, 112, 144, 0, _vm->_draw->_backSurface, font); _vm->_draw->drawString("100 %", 402, 405, 112, 144, 0, _vm->_draw->_backSurface, font);
_vm->_draw->forceBlit(); _vm->_draw->forceBlit();
_vm->_util->freeFont(font); delete font;
} }
} }

View file

@ -378,11 +378,6 @@ Video::FontDesc *Util::loadFont(const char *path) {
return fontDesc; return fontDesc;
} }
void Util::freeFont(Video::FontDesc *fontDesc) {
delete[] (fontDesc->dataPtr - 4);
delete fontDesc;
}
void Util::insertStr(const char *str1, char *str2, int16 pos) { void Util::insertStr(const char *str1, char *str2, int16 pos) {
int len1 = strlen(str1); int len1 = strlen(str1);
int len2 = strlen(str2); int len2 = strlen(str2);

View file

@ -77,7 +77,6 @@ public:
void setScrollOffset(int16 x = -1, int16 y = -1); void setScrollOffset(int16 x = -1, int16 y = -1);
Video::FontDesc *loadFont(const char *path); Video::FontDesc *loadFont(const char *path);
void freeFont(Video::FontDesc *fontDesc);
static void insertStr(const char *str1, char *str2, int16 pos); static void insertStr(const char *str1, char *str2, int16 pos);
static void cutFromStr(char *str, int16 from, int16 cutlen); static void cutFromStr(char *str, int16 from, int16 cutlen);

View file

@ -120,6 +120,10 @@ char Video::initDriver(int16 vidMode) {
return 1; return 1;
} }
Video::~Video() {
delete _palLUT;
}
void Video::freeDriver() { void Video::freeDriver() {
delete _videoDriver; delete _videoDriver;
} }

View file

@ -75,7 +75,11 @@ public:
int8 bitWidth; int8 bitWidth;
byte *extraData; byte *extraData;
FontDesc() : dataPtr(0), itemWidth(0), itemHeight(0), startItem(0), FontDesc() : dataPtr(0), itemWidth(0), itemHeight(0), startItem(0),
endItem(0), itemSize(0), bitWidth(0) {} endItem(0), itemSize(0), bitWidth(0) {}
~FontDesc() {
if (dataPtr)
delete[] (dataPtr - 4);
}
}; };
#define GDR_VERSION 4 #define GDR_VERSION 4
@ -177,7 +181,7 @@ public:
virtual void init() { } virtual void init() { }
Video(class GobEngine *vm); Video(class GobEngine *vm);
virtual ~Video() {} virtual ~Video();
protected: protected:
class VideoDriver *_videoDriver; class VideoDriver *_videoDriver;

View file

@ -27,6 +27,7 @@
#include "gob/gob.h" #include "gob/gob.h"
#include "gob/video.h" #include "gob/video.h"
#include "gob/util.h"
#include "gob/indeo3.h" #include "gob/indeo3.h"
namespace Gob { namespace Gob {
@ -40,10 +41,11 @@ void Video_v6::init() {
initOSD(); initOSD();
char text[30]; char text[30];
for (int i = 0; i < 64; i++) { for (int i = 0; (i < 64) && !_vm->shouldQuit(); i++) {
sprintf(text, "Building palette table: %02d/63", i); sprintf(text, "Building palette table: %02d/63", i);
drawOSDText(text); drawOSDText(text);
_palLUT->buildNext(); _palLUT->buildNext();
_vm->_util->processInput();
} }
} }
@ -153,6 +155,8 @@ void Video_v6::drawYUV(SurfaceDesc *destDesc, int16 x, int16 y,
dither->nextLine(); dither->nextLine();
vidMem += destDesc->getWidth(); vidMem += destDesc->getWidth();
} }
delete dither;
} }
const byte Video_v6::_ditherPalette[768] = { const byte Video_v6::_ditherPalette[768] = {