aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/sound.cpp
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/sound.cpp
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/sound.cpp')
-rw-r--r--engines/parallaction/sound.cpp8
1 files changed, 7 insertions, 1 deletions
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];