TSAGE: Fixing memory leaks

This commit is contained in:
Paul Gilbert 2011-04-09 21:27:25 +10:00
parent f5d22217d6
commit 747295e9b4
6 changed files with 27 additions and 20 deletions

View File

@ -37,6 +37,7 @@
namespace tSage { namespace tSage {
EventsClass::EventsClass() { EventsClass::EventsClass() {
_currentCursor = CURSOR_NONE;
_frameNumber = 0; _frameNumber = 0;
_priorFrameTime = 0; _priorFrameTime = 0;
_prevDelayFrame = 0; _prevDelayFrame = 0;

View File

@ -70,7 +70,6 @@ public:
SequenceManager _sequenceManager; SequenceManager _sequenceManager;
Common::RandomSource _randomSource; Common::RandomSource _randomSource;
int _stripNum; int _stripNum;
FloatSet _floatSet;
public: public:
Globals(); Globals();
~Globals(); ~Globals();

View File

@ -178,14 +178,14 @@ void RlbManager::loadSection(uint32 fileOffset) {
assert(type <= 1); assert(type <= 1);
uint32 offset = _file.readUint32LE(); uint32 offset = _file.readUint32LE();
ResourceEntry *re = new ResourceEntry(); ResourceEntry re;
re->id = id; re.id = id;
re->fileOffset = offset; re.fileOffset = offset;
re->isCompressed = type != 0; re.isCompressed = type != 0;
re->size = ((sizeHi & 0xF) << 16) | size; re.size = ((sizeHi & 0xF) << 16) | size;
re->uncompressedSize = ((sizeHi & 0xF0) << 12) | uncSize; re.uncompressedSize = ((sizeHi & 0xF0) << 12) | uncSize;
_resources.push_back(*re); _resources.push_back(re);
} }
} }
@ -340,12 +340,12 @@ void RlbManager::loadIndex() {
fileOffset = READ_LE_UINT16(p + 4); fileOffset = READ_LE_UINT16(p + 4);
p += 6; p += 6;
SectionEntry *se = new SectionEntry(); SectionEntry se;
se->resNum = resNum; se.resNum = resNum;
se->resType = (ResourceType)(configId & 0x1f); se.resType = (ResourceType)(configId & 0x1f);
se->fileOffset = (((configId >> 5) & 0x7ff) << 16) | fileOffset; se.fileOffset = (((configId >> 5) & 0x7ff) << 16) | fileOffset;
_sections.push_back(*se); _sections.push_back(se);
} }
_memoryManager.deallocate(pData); _memoryManager.deallocate(pData);

View File

@ -35,6 +35,7 @@ SceneManager::SceneManager() {
_hasPalette = false; _hasPalette = false;
_sceneNumber = -1; _sceneNumber = -1;
_nextSceneNumber = -1; _nextSceneNumber = -1;
_previousScene = 0;
_fadeMode = FADEMODE_GRADUAL; _fadeMode = FADEMODE_GRADUAL;
_scrollerRect = Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); _scrollerRect = Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
_saver->addListener(this); _saver->addListener(this);

View File

@ -73,15 +73,21 @@ bool TSageEngine::hasFeature(EngineFeature f) const {
void TSageEngine::initialise() { void TSageEngine::initialise() {
_tSageManager = new RlbManager(_memoryManager, "tsage.rlb"); _tSageManager = new RlbManager(_memoryManager, "tsage.rlb");
_dataManager = new RlbManager(_memoryManager, "ring.rlb"); _dataManager = new RlbManager(_memoryManager, "ring.rlb");
_saver = new Saver();
_globals = new Globals();
_globals->gfxManager().setDefaults();
}
void TSageEngine::deinitialise() {
delete _globals;
delete _saver;
delete _tSageManager;
delete _dataManager;
} }
Common::Error TSageEngine::run() { Common::Error TSageEngine::run() {
// Basic initialisation // Basic initialisation
initialise();
_saver = new Saver();
_globals = new Globals();
_globals->gfxManager().setDefaults();
initialise(); initialise();
_globals->_events.showCursor(); _globals->_events.showCursor();
@ -89,8 +95,7 @@ Common::Error TSageEngine::run() {
_globals->_sceneHandler.registerHandler(); _globals->_sceneHandler.registerHandler();
_globals->_game.execute(); _globals->_game.execute();
delete _globals; deinitialise();
delete _saver;
return Common::kNoError; return Common::kNoError;
} }

View File

@ -90,6 +90,7 @@ public:
Common::String generateSaveName(int slot); Common::String generateSaveName(int slot);
void initialise(); void initialise();
void deinitialise();
}; };
extern TSageEngine *_vm; extern TSageEngine *_vm;