diff options
author | Juan Linietsky <reduzio@gmail.com> | 2017-12-20 13:55:30 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2017-12-20 13:55:58 -0300 |
commit | 045f81023b25cd4ca0ec1e43b1a2ab19ad645d1b (patch) | |
tree | 615023b19a2e652469965f0a96182925dfdce522 | |
parent | 1040766725113a3a0813740fe47eb0fe674be54e (diff) |
Properly silence buffer while not in use, fixes #14866
-rw-r--r-- | servers/audio/audio_stream.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp index 15d4a11223..6048c47347 100644 --- a/servers/audio/audio_stream.cpp +++ b/servers/audio/audio_stream.cpp @@ -76,14 +76,14 @@ void AudioStreamPlaybackResampled::mix(AudioFrame *p_buffer, float p_rate_scale, internal_buffer[1] = internal_buffer[INTERNAL_BUFFER_LEN + 1]; internal_buffer[2] = internal_buffer[INTERNAL_BUFFER_LEN + 2]; internal_buffer[3] = internal_buffer[INTERNAL_BUFFER_LEN + 3]; - if (!is_playing()) { - for (int i = 4; i < INTERNAL_BUFFER_LEN; ++i) { - internal_buffer[i] = AudioFrame(0, 0); + if (is_playing()) { + _mix_internal(internal_buffer + 4, INTERNAL_BUFFER_LEN); + } else { + //fill with silence, not playing + for (int i = 0; i < INTERNAL_BUFFER_LEN; ++i) { + internal_buffer[i + 4] = AudioFrame(0, 0); } - - return; } - _mix_internal(internal_buffer + 4, INTERNAL_BUFFER_LEN); mix_offset -= (INTERNAL_BUFFER_LEN << FP_BITS); } } |