diff options
-rw-r--r-- | engines/sky/music/musicbase.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/engines/sky/music/musicbase.cpp b/engines/sky/music/musicbase.cpp index b388afdb13..944edb1fdc 100644 --- a/engines/sky/music/musicbase.cpp +++ b/engines/sky/music/musicbase.cpp @@ -44,9 +44,9 @@ MusicBase::~MusicBase() { } void MusicBase::loadSection(uint8 pSection) { - Common::StackLock lock(_mutex); if (_currentMusic) stopMusicInternal(); + Common::StackLock lock(_mutex); free(_musicData); _currentSection = pSection; _musicData = _skyDisk->loadFile(_driverFileBase + FILES_PER_SECTION * pSection); @@ -70,13 +70,14 @@ bool MusicBase::musicIsPlaying() { } void MusicBase::stopMusic() { - Common::StackLock lock(_mutex); stopMusicInternal(); } void MusicBase::stopMusicInternal() { _mixer->stopHandle(_musicHandle); + Common::StackLock lock(_mutex); + for (uint8 cnt = 0; cnt < _numberOfChannels; cnt++) delete _channels[cnt]; _numberOfChannels = 0; |