diff options
author | Nicola Mettifogo | 2008-11-01 12:39:01 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2008-11-01 12:39:01 +0000 |
commit | cd3011e4088fc25846278d2e8cf6527245d5d333 (patch) | |
tree | e13da67ee0352b90e896a506b2e12bd82df569a8 | |
parent | 92cfe5e24660907c9195ed0e251598bf3a722b24 (diff) | |
download | scummvm-rg350-cd3011e4088fc25846278d2e8cf6527245d5d333.tar.gz scummvm-rg350-cd3011e4088fc25846278d2e8cf6527245d5d333.tar.bz2 scummvm-rg350-cd3011e4088fc25846278d2e8cf6527245d5d333.zip |
Fixed assorted leaks in NS Amiga.
svn-id: r34870
-rw-r--r-- | engines/parallaction/disk_ns.cpp | 2 | ||||
-rw-r--r-- | engines/parallaction/graphics.cpp | 1 | ||||
-rw-r--r-- | engines/parallaction/parallaction.cpp | 1 | ||||
-rw-r--r-- | engines/parallaction/sound.cpp | 8 |
4 files changed, 10 insertions, 2 deletions
diff --git a/engines/parallaction/disk_ns.cpp b/engines/parallaction/disk_ns.cpp index 32928c014e..6f968ca317 100644 --- a/engines/parallaction/disk_ns.cpp +++ b/engines/parallaction/disk_ns.cpp @@ -903,7 +903,7 @@ Cnv* AmigaDisk_ns::makeCnv(Common::SeekableReadStream &stream) { free(buf); - return new Cnv(numFrames, width, height, data); + return new Cnv(numFrames, width, height, data, true); } #undef NUM_PLANES diff --git a/engines/parallaction/graphics.cpp b/engines/parallaction/graphics.cpp index 5526ecc64d..9f1bd559b3 100644 --- a/engines/parallaction/graphics.cpp +++ b/engines/parallaction/graphics.cpp @@ -765,6 +765,7 @@ Gfx::Gfx(Parallaction* vm) : _backgroundInfo = 0; _halfbrite = false; + _nextProjectorPos = 0; _hbCircleRadius = 0; _unpackedBitmap = new byte[MAXIMUM_UNPACKED_BITMAP_SIZE]; diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index b52c4cfba8..388675e31a 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -89,6 +89,7 @@ Parallaction::~Parallaction() { delete _callableNames; delete _cmdExec; delete _programExec; + delete _saveLoad; _gfx->clearGfxObjects(kGfxObjCharacter | kGfxObjNormal); hideDialogueStuff(); diff --git a/engines/parallaction/sound.cpp b/engines/parallaction/sound.cpp index 90cd2b9129..698373d541 100644 --- a/engines/parallaction/sound.cpp +++ b/engines/parallaction/sound.cpp @@ -312,9 +312,13 @@ void DosSoundMan::playLocationMusic(const char *location) { AmigaSoundMan::AmigaSoundMan(Parallaction *vm) : SoundMan(vm) { _musicStream = 0; _channels[0].data = 0; + _channels[0].dispose = false; _channels[1].data = 0; + _channels[1].dispose = false; _channels[2].data = 0; + _channels[2].dispose = false; _channels[3].data = 0; + _channels[3].dispose = false; } AmigaSoundMan::~AmigaSoundMan() { @@ -340,7 +344,7 @@ void AmigaSoundMan::loadChannelData(const char *filename, Channel *ch) { ch->header.samplesPerHiCycle = 0; ch->header.samplesPerSec = 11934; ch->header.volume = 160; - ch->data = new int8[AMIGABEEP_SIZE * NUM_REPEATS]; + ch->data = (int8*)malloc(AMIGABEEP_SIZE * NUM_REPEATS); int8* odata = ch->data; for (uint i = 0; i < NUM_REPEATS; i++) { memcpy(odata, res_amigaBeep, AMIGABEEP_SIZE); @@ -364,6 +368,8 @@ void AmigaSoundMan::playSfx(const char *filename, uint channel, bool looping, in return; } + stopSfx(channel); + debugC(1, kDebugAudio, "AmigaSoundMan::playSfx(%s, %i)", filename, channel); Channel *ch = &_channels[channel]; |