diff options
author | Christopher Page | 2008-05-14 23:26:32 +0000 |
---|---|---|
committer | Christopher Page | 2008-05-14 23:26:32 +0000 |
commit | 5e592d4e4aa7eb9929a9bbf1283a0382d890de84 (patch) | |
tree | ae6271bd8885892ee373df1ba30736d293193e64 /engines/agos/agos.cpp | |
parent | cbe03226a4e3e658a3832eec233e1630c4515474 (diff) | |
download | scummvm-rg350-5e592d4e4aa7eb9929a9bbf1283a0382d890de84.tar.gz scummvm-rg350-5e592d4e4aa7eb9929a9bbf1283a0382d890de84.tar.bz2 scummvm-rg350-5e592d4e4aa7eb9929a9bbf1283a0382d890de84.zip |
Fixed memory leak when returning to launcher in AGOS engine by properly creating and deleting midi driver pointer
svn-id: r32129
Diffstat (limited to 'engines/agos/agos.cpp')
-rw-r--r-- | engines/agos/agos.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp index a79b84843c..b1586bfecc 100644 --- a/engines/agos/agos.cpp +++ b/engines/agos/agos.cpp @@ -558,14 +558,17 @@ int AGOSEngine::init() { // Setup midi driver int midiDriver = MidiDriver::detectMusicDriver(MDT_ADLIB | MDT_MIDI); _nativeMT32 = ((midiDriver == MD_MT32) || ConfMan.getBool("native_mt32")); - MidiDriver *driver = MidiDriver::createMidi(midiDriver); + + _driver = MidiDriver::createMidi(midiDriver); + if (_nativeMT32) { - driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE); + _driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE); } _midi.mapMT32toGM (getGameType() != GType_SIMON2 && !_nativeMT32); - _midi.setDriver(driver); + _midi.setDriver(_driver); + int ret = _midi.open(); if (ret) warning("MIDI Player init failed: \"%s\"", _midi.getErrorName (ret)); @@ -877,6 +880,7 @@ AGOSEngine::~AGOSEngine() { delete _gameFile; _midi.close(); + delete _driver; for (uint i = 0; i < _itemHeap.size(); i++) { delete[] _itemHeap[i]; @@ -1015,6 +1019,7 @@ void AGOSEngine::shutdown() { delete _gameFile; _midi.close(); + delete _driver; for (uint i = 0; i < _itemHeap.size(); i++) { delete[] _itemHeap[i]; |