diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sherlock/music.cpp | 13 | ||||
-rw-r--r-- | engines/sherlock/music.h | 2 |
2 files changed, 6 insertions, 9 deletions
diff --git a/engines/sherlock/music.cpp b/engines/sherlock/music.cpp index 1f211f4c51..49c48126f4 100644 --- a/engines/sherlock/music.cpp +++ b/engines/sherlock/music.cpp @@ -210,6 +210,8 @@ void MidiParser_SH::unloadMusic() { _musData = NULL; _musDataSize = 0; } + + MidiParser::unloadMusic(); } /*----------------------------------------------------------------*/ @@ -504,14 +506,7 @@ bool Music::playMusic(const Common::String &name) { } void Music::stopMusic() { - if (isPlaying()) { - if (!IS_3DO) - _midiParser->stopPlaying(); - else - _mixer->stopHandle(_digitalMusicHandle); - } - - _musicPlaying = false; + freeSong(); } void Music::startSong() { @@ -531,6 +526,8 @@ void Music::freeSong() { // Free the MIDI MUS data buffer _midiParser->unloadMusic(); } + + _musicPlaying = false; } void Music::waitTimerRoland(uint time) { diff --git a/engines/sherlock/music.h b/engines/sherlock/music.h index 1bcedf273b..93c565c162 100644 --- a/engines/sherlock/music.h +++ b/engines/sherlock/music.h @@ -52,7 +52,7 @@ protected: public: bool loadMusic(byte *musData, uint32 musSize); - void unloadMusic(); + virtual void unloadMusic(); private: byte *_musData; |