diff options
Diffstat (limited to 'simon')
-rw-r--r-- | simon/sound.cpp | 15 | ||||
-rw-r--r-- | simon/sound.h | 3 |
2 files changed, 16 insertions, 2 deletions
diff --git a/simon/sound.cpp b/simon/sound.cpp index d38cd3903f..d04a919dc4 100644 --- a/simon/sound.cpp +++ b/simon/sound.cpp @@ -31,7 +31,7 @@ protected: public: BaseSound(SoundMixer *mixer, File *file, uint32 base = 0); BaseSound(SoundMixer *mixer, File *file, uint32 *offsets); - virtual ~BaseSound() { delete _file; } + virtual ~BaseSound(); virtual int playSound(uint sound, PlayingSoundHandle *handle, byte flags = 0) = 0; }; @@ -91,6 +91,11 @@ BaseSound::BaseSound(SoundMixer *mixer, File *file, uint32 *offsets) { _offsets = offsets; } +BaseSound::~BaseSound() { + free(_offsets); + delete _file; +} + #if !defined(__GNUC__) #pragma START_PACK_STRUCTS #endif @@ -322,6 +327,14 @@ SimonSound::SimonSound(const byte game, const GameSpecificSettings *gss, const c } } +SimonSound::~SimonSound() { + delete _voice; + delete _effects; + + free(_filenums); + free(_offsets); +} + void SimonSound::readSfxFile(const char *filename, const char *gameDataPath) { stopAll(); diff --git a/simon/sound.h b/simon/sound.h index 8a510a4e66..d3eb7ab325 100644 --- a/simon/sound.h +++ b/simon/sound.h @@ -50,7 +50,8 @@ public: uint _ambient_playing; SimonSound(const byte game, const GameSpecificSettings *gss, const char *gameDataPath, SoundMixer *mixer); - + ~SimonSound(); + void readSfxFile(const char *filename, const char *gameDataPath); void loadSfxTable(File *gameFile, uint32 base); |