aboutsummaryrefslogtreecommitdiff
path: root/sound/mixer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sound/mixer.cpp')
-rw-r--r--sound/mixer.cpp41
1 files changed, 7 insertions, 34 deletions
diff --git a/sound/mixer.cpp b/sound/mixer.cpp
index 1712209237..26fd195b07 100644
--- a/sound/mixer.cpp
+++ b/sound/mixer.cpp
@@ -108,7 +108,6 @@ Mixer::Mixer() {
_handleSeed = 0;
- _premixChannel = 0;
int i = 0;
for (i = 0; i < ARRAYSIZE(_volumeForSoundType); i++)
@@ -121,29 +120,14 @@ Mixer::Mixer() {
}
Mixer::~Mixer() {
- stopAll(true);
-
- delete _premixChannel;
- _premixChannel = 0;
+ for (int i = 0; i != NUM_CHANNELS; i++)
+ delete _channels[i];
}
uint Mixer::getOutputRate() const {
return (uint)_syst->getOutputSampleRate();
}
-void Mixer::setupPremix(AudioStream *stream, SoundType type) {
- Common::StackLock lock(_mutex);
-
- delete _premixChannel;
- _premixChannel = 0;
-
- if (stream == 0)
- return;
-
- // Create the channel
- _premixChannel = new Channel(this, type, stream, false);
-}
-
void Mixer::insertChannel(SoundHandle *handle, Channel *chan) {
int index = -1;
@@ -246,10 +230,7 @@ void Mixer::mix(int16 *buf, uint len) {
// zero the buf
memset(buf, 0, 2 * len * sizeof(int16));
- if (_premixChannel && !_premixChannel->isPaused())
- _premixChannel->mix(buf, len);
-
- // now mix all channels
+ // mix all channels
for (int i = 0; i != NUM_CHANNELS; i++)
if (_channels[i]) {
if (_channels[i]->isFinished()) {
@@ -268,18 +249,14 @@ void Mixer::mixCallback(void *s, byte *samples, int len) {
((Mixer *)s)->mix((int16 *)samples, len >> 2);
}
-void Mixer::stopAll(bool force) {
+void Mixer::stopAll() {
Common::StackLock lock(_mutex);
for (int i = 0; i != NUM_CHANNELS; i++) {
- if (_channels[i] != 0) {
- if (force || !_channels[i]->isPermanent()) {
- delete _channels[i];
- _channels[i] = 0;
- }
+ if (_channels[i] != 0 && !_channels[i]->isPermanent()) {
+ delete _channels[i];
+ _channels[i] = 0;
}
}
-
- // Note: the _premixChannel is *not* affected by stopAll!
}
void Mixer::stopID(int id) {
@@ -341,10 +318,6 @@ void Mixer::pauseAll(bool paused) {
_channels[i]->pause(paused);
}
}
-
- // Unlike stopAll, we also pause the premix channel, if present.
- if (_premixChannel)
- _premixChannel->pause(paused);
}
void Mixer::pauseID(int id, bool paused) {