aboutsummaryrefslogtreecommitdiff
path: root/sound/mixer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sound/mixer.cpp')
-rw-r--r--sound/mixer.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/sound/mixer.cpp b/sound/mixer.cpp
index a46ad18db7..21439a648e 100644
--- a/sound/mixer.cpp
+++ b/sound/mixer.cpp
@@ -44,6 +44,7 @@ protected:
RateConverter *_converter;
AudioInputStream *_input;
byte _volume;
+ byte _flags;
int8 _pan;
bool _paused;
@@ -510,6 +511,7 @@ ChannelRaw::ChannelRaw(SoundMixer *mixer, PlayingSoundHandle *handle, void *soun
: Channel(mixer, handle) {
_id = id;
_ptr = (byte *)sound;
+ _flags = flags;
_volume = volume;
_pan = pan;
@@ -533,7 +535,10 @@ ChannelRaw::ChannelRaw(SoundMixer *mixer, PlayingSoundHandle *handle, void *soun
}
ChannelRaw::~ChannelRaw() {
- free(_ptr);
+ if (_flags & SoundMixer::FLAG_AUTOFREE)
+ free(_ptr);
+ else if (_flags & SoundMixer::FLAG_AUTODELETE)
+ delete _ptr;
}
ChannelStream::ChannelStream(SoundMixer *mixer, PlayingSoundHandle *handle,