[Scummvm-cvs-logs] SF.net SVN: scummvm:[33852] scummvm/branches/gsoc2008-rtl/engines/agos/ sound.cpp
cpage88 at users.sourceforge.net
cpage88 at users.sourceforge.net
Thu Aug 14 02:26:58 CEST 2008
Revision: 33852
http://scummvm.svn.sourceforge.net/scummvm/?rev=33852&view=rev
Author: cpage88
Date: 2008-08-14 00:26:57 +0000 (Thu, 14 Aug 2008)
Log Message:
-----------
Fixed a memory leak in Agos
Modified Paths:
--------------
scummvm/branches/gsoc2008-rtl/engines/agos/sound.cpp
Modified: scummvm/branches/gsoc2008-rtl/engines/agos/sound.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/agos/sound.cpp 2008-08-13 23:07:26 UTC (rev 33851)
+++ scummvm/branches/gsoc2008-rtl/engines/agos/sound.cpp 2008-08-14 00:26:57 UTC (rev 33852)
@@ -56,10 +56,12 @@
public:
BaseSound(Audio::Mixer *mixer, File *file, uint32 base = 0, bool bigEndian = false);
BaseSound(Audio::Mixer *mixer, File *file, uint32 *offsets, bool bigEndian = false);
+ virtual ~BaseSound();
+ void close();
+
void playSound(uint sound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, byte flags, int vol = 0) {
playSound(sound, sound, type, handle, flags, vol);
}
- virtual ~BaseSound();
virtual void playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, byte flags, int vol = 0) = 0;
virtual Audio::AudioStream *makeAudioStream(uint sound) { return NULL; }
};
@@ -184,6 +186,12 @@
_freeOffsets = false;
}
+void BaseSound::close() {
+ if (_freeOffsets) {
+ free(_offsets);
+ }
+}
+
BaseSound::~BaseSound() {
if (_freeOffsets)
free(_offsets);
@@ -555,6 +563,9 @@
void Sound::loadSfxTable(File *gameFile, uint32 base) {
stopAll();
+
+ if (_effects)
+ _effects->close();
if (_vm->getPlatform() == Common::kPlatformWindows)
_effects = new WavSound(_mixer, gameFile, base);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list