aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sound/music.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/sound/music.cpp')
-rw-r--r--engines/sci/sound/music.cpp20
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;
}