aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2010-01-12 20:26:49 +0000
committerJohannes Schickel2010-01-12 20:26:49 +0000
commitdd39b64ce4e5c508451be50d770e4b0f63b7e581 (patch)
treef4718455800740009a1316ba71b1f4fe460840e8
parent3578f8d091f55960868a4a36e4b48bf3a03d3659 (diff)
downloadscummvm-rg350-dd39b64ce4e5c508451be50d770e4b0f63b7e581.tar.gz
scummvm-rg350-dd39b64ce4e5c508451be50d770e4b0f63b7e581.tar.bz2
scummvm-rg350-dd39b64ce4e5c508451be50d770e4b0f63b7e581.zip
Fix memory leak in MidiPlayer_Adlib.
svn-id: r47276
-rw-r--r--engines/sci/sound/softseq/adlib.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/engines/sci/sound/softseq/adlib.cpp b/engines/sci/sound/softseq/adlib.cpp
index 5d0c9bef66..89e2fd8ff3 100644
--- a/engines/sci/sound/softseq/adlib.cpp
+++ b/engines/sci/sound/softseq/adlib.cpp
@@ -161,7 +161,11 @@ private:
class MidiPlayer_Adlib : public MidiPlayer {
public:
MidiPlayer_Adlib() { _driver = new MidiDriver_Adlib(g_system->getMixer()); }
+ ~MidiPlayer_Adlib() {}
+
int open(ResourceManager *resMan);
+ void close();
+
byte getPlayId(SciVersion soundVersion);
int getPolyphony() const { return MidiDriver_Adlib::kVoices; }
bool hasRhythmChannel() const { return false; }
@@ -812,6 +816,14 @@ int MidiPlayer_Adlib::open(ResourceManager *resMan) {
return static_cast<MidiDriver_Adlib *>(_driver)->open(getSciVersion() <= SCI_VERSION_0_LATE);
}
+void MidiPlayer_Adlib::close() {
+ if (_driver) {
+ _driver->close();
+ delete _driver;
+ _driver = 0;
+ }
+}
+
byte MidiPlayer_Adlib::getPlayId(SciVersion soundVersion) {
switch (soundVersion) {
case SCI_VERSION_0_EARLY: