aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction
diff options
context:
space:
mode:
authorNicola Mettifogo2008-11-01 12:39:01 +0000
committerNicola Mettifogo2008-11-01 12:39:01 +0000
commitcd3011e4088fc25846278d2e8cf6527245d5d333 (patch)
treee13da67ee0352b90e896a506b2e12bd82df569a8 /engines/parallaction
parent92cfe5e24660907c9195ed0e251598bf3a722b24 (diff)
downloadscummvm-rg350-cd3011e4088fc25846278d2e8cf6527245d5d333.tar.gz
scummvm-rg350-cd3011e4088fc25846278d2e8cf6527245d5d333.tar.bz2
scummvm-rg350-cd3011e4088fc25846278d2e8cf6527245d5d333.zip
Fixed assorted leaks in NS Amiga.
svn-id: r34870
Diffstat (limited to 'engines/parallaction')
-rw-r--r--engines/parallaction/disk_ns.cpp2
-rw-r--r--engines/parallaction/graphics.cpp1
-rw-r--r--engines/parallaction/parallaction.cpp1
-rw-r--r--engines/parallaction/sound.cpp8
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];