diff options
| -rw-r--r-- | sound/mixer.cpp | 22 | 
1 files changed, 11 insertions, 11 deletions
| diff --git a/sound/mixer.cpp b/sound/mixer.cpp index 45e8997cfa..fbeef67d6d 100644 --- a/sound/mixer.cpp +++ b/sound/mixer.cpp @@ -91,8 +91,8 @@ public:  class ChannelRaw : public Channel {  	byte *_ptr; -	byte _flags;  #ifndef NEW_MIXER_CODE +	byte _flags;  	uint32 _pos;  	uint32 _size;  	uint32 _fpSpeed; @@ -681,7 +681,6 @@ ChannelRaw::ChannelRaw(SoundMixer *mixer, PlayingSoundHandle *handle, void *soun  	: Channel(mixer, handle) {  	_id = id;  	_ptr = (byte *)sound; -	_flags = flags;  #ifdef NEW_MIXER_CODE  	// Create the input stream @@ -695,15 +694,14 @@ ChannelRaw::ChannelRaw(SoundMixer *mixer, PlayingSoundHandle *handle, void *soun  	} else {  		_input = makeLinearInputStream(flags, _ptr, size, 0, 0);  	} -	// TODO: add support for SoundMixer::FLAG_REVERSE_STEREO  	// Get a rate converter instance  	_converter = makeRateConverter(rate, mixer->getOutputRate(), _input->isStereo(), (flags & SoundMixer::FLAG_REVERSE_STEREO) != 0); -//	printf("inrate %d, outrate %d, %d bits, %s\n", -//			rate, mixer->getOutputRate(), -//			((flags & SoundMixer::FLAG_16BITS) ? 16 : 8), -//			((flags & SoundMixer::FLAG_UNSIGNED) ? "unsigned" : "signed")); + +	if (!(flags & SoundMixer::FLAG_AUTOFREE)) +		_ptr = 0;  #else +	_flags = flags;  	_pos = 0;  	_fpPos = 0;  	_fpSpeed = (1 << 16) * rate / mixer->getOutputRate(); @@ -728,8 +726,12 @@ ChannelRaw::ChannelRaw(SoundMixer *mixer, PlayingSoundHandle *handle, void *soun  }  ChannelRaw::~ChannelRaw() { +#ifdef NEW_MIXER_CODE +	free(_ptr); +#else  	if (_flags & SoundMixer::FLAG_AUTOFREE)  		free(_ptr); +#endif  }  #ifndef NEW_MIXER_CODE @@ -771,14 +773,12 @@ ChannelStream::ChannelStream(SoundMixer *mixer, PlayingSoundHandle *handle, void  	// Create the input stream  	_input = makeWrappedInputStream(flags, buffer_size); +	 +	// Append the initial data  	((WrappedAudioInputStream *)_input)->append((const byte *)sound, size); -	// TODO: add support for SoundMixer::FLAG_REVERSE_STEREO  	// Get a rate converter instance  	_converter = makeRateConverter(rate, mixer->getOutputRate(), _input->isStereo(), (flags & SoundMixer::FLAG_REVERSE_STEREO) != 0); -//	printf("   data has %d bits and is %s\n", -//			((flags & SoundMixer::FLAG_16BITS) ? 16 : 8), -//			((flags & SoundMixer::FLAG_UNSIGNED) ? "unsigned" : "signed"));  #else  	_flags = flags;  	_bufferSize = buffer_size; | 
