diff options
author | Robert Göffringmann | 2003-08-09 19:19:27 +0000 |
---|---|---|
committer | Robert Göffringmann | 2003-08-09 19:19:27 +0000 |
commit | 7f7b0af613622825deb94af72093f19fda0fe68a (patch) | |
tree | b8b58c16cbf8cbdb804a8bea4ad391c35710e963 /sound | |
parent | 129ae93ca6ae1a19d419b1e5893e97eb91716f20 (diff) | |
download | scummvm-rg350-7f7b0af613622825deb94af72093f19fda0fe68a.tar.gz scummvm-rg350-7f7b0af613622825deb94af72093f19fda0fe68a.tar.bz2 scummvm-rg350-7f7b0af613622825deb94af72093f19fda0fe68a.zip |
added SoundMixer::pauseChannels for pausing SFX and keeping adlib music running (needed by BASS when menu bar drops down)
svn-id: r9607
Diffstat (limited to 'sound')
-rw-r--r-- | sound/mixer.cpp | 7 | ||||
-rw-r--r-- | sound/mixer.h | 5 |
2 files changed, 10 insertions, 2 deletions
diff --git a/sound/mixer.cpp b/sound/mixer.cpp index 40f59714ab..8d452b4431 100644 --- a/sound/mixer.cpp +++ b/sound/mixer.cpp @@ -121,6 +121,7 @@ SoundMixer::SoundMixer() { _musicVolume = 0; _paused = false; + _channelsPaused = false; for (i = 0; i != NUM_CHANNELS; i++) _channels[i] = NULL; @@ -237,7 +238,7 @@ void SoundMixer::mix(int16 *buf, uint len) { memset(buf, 0, 2 * len * sizeof(int16)); } - if (!_paused) { + if (!_paused && !_channelsPaused) { // now mix all channels for (int i = 0; i != NUM_CHANNELS; i++) if (_channels[i]) @@ -314,6 +315,10 @@ void SoundMixer::pause(bool paused) { _paused = paused; } +void SoundMixer::pauseChannels(bool paused) { + _channelsPaused = paused; +} + bool SoundMixer::hasActiveSFXChannel() { // FIXME/TODO: We need to distinguish between SFX and music channels // (and maybe also voice) here to work properly in iMuseDigital diff --git a/sound/mixer.h b/sound/mixer.h index 2993b5416b..e90218b11d 100644 --- a/sound/mixer.h +++ b/sound/mixer.h @@ -73,7 +73,7 @@ private: int _globalVolume; int _musicVolume; - bool _paused; + bool _paused, _channelsPaused; Channel *_channels[NUM_CHANNELS]; @@ -127,6 +127,9 @@ public: /** pause - unpause */ void pause(bool paused); + /** pause - unpause channels, keep adlib music running */ + void pauseChannels(bool paused); + /** set the global volume, 0-256 */ void setVolume(int volume); |