diff options
Diffstat (limited to 'engines/sci/sound/music.cpp')
-rw-r--r-- | engines/sci/sound/music.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp index d96fdcbe70..c3141e67ef 100644 --- a/engines/sci/sound/music.cpp +++ b/engines/sci/sound/music.cpp @@ -91,12 +91,21 @@ void SciMusic::init() { } void SciMusic::clearPlayList() { - _mutex.lock(); + Common::StackLock lock(_mutex); + while (!_playList.empty()) { soundStop(_playList[0]); soundKill(_playList[0]); } - _mutex.unlock(); +} + +void SciMusic::pauseAll(bool pause) { + Common::StackLock lock(_mutex); + + const MusicList::iterator end = _playList.end(); + for (MusicList::iterator i = _playList.begin(); i != end; ++i) { + soundToggle(*i, pause); + } } void SciMusic::miditimerCallback(void *p) { @@ -326,6 +335,13 @@ void SciMusic::soundResume(MusicEntry *pSnd) { soundPlay(pSnd); } +void SciMusic::soundToggle(MusicEntry *pSnd, bool pause) { + if (pause) + soundPause(pSnd); + else + soundResume(pSnd); +} + uint16 SciMusic::soundGetMasterVolume() { return _masterVolume; } |