summaryrefslogtreecommitdiff
path: root/src/audio_core/audio_renderer.cpp
diff options
context:
space:
mode:
authorGravatar David Marcec2019-07-01 21:20:23 +1000
committerGravatar David Marcec2019-07-01 21:20:23 +1000
commitb82b5e46e7c7ab259110fe49712f29220727d762 (patch)
tree7280d5ac099796391842ef2157d578378413e08b /src/audio_core/audio_renderer.cpp
parentMerge pull request #2583 from FernandoS27/core-timing-safe (diff)
downloadyuzu-b82b5e46e7c7ab259110fe49712f29220727d762.tar.gz
yuzu-b82b5e46e7c7ab259110fe49712f29220727d762.tar.xz
yuzu-b82b5e46e7c7ab259110fe49712f29220727d762.zip
audren: Only manage wave buffers with a size
We shouldn't be incrementing if wave buffers are empty. They are considered invalid/unused wave buffers. This fixes the issue of certain sounds looping when they shouldn't
Diffstat (limited to 'src/audio_core/audio_renderer.cpp')
-rw-r--r--src/audio_core/audio_renderer.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/audio_core/audio_renderer.cpp b/src/audio_core/audio_renderer.cpp
index 9a0939883..0c3d7df01 100644
--- a/src/audio_core/audio_renderer.cpp
+++ b/src/audio_core/audio_renderer.cpp
@@ -217,13 +217,15 @@ std::vector<s16> AudioRenderer::VoiceState::DequeueSamples(std::size_t sample_co
217 if (offset == samples.size()) { 217 if (offset == samples.size()) {
218 offset = 0; 218 offset = 0;
219 219
220 if (!wave_buffer.is_looping) { 220 if (!wave_buffer.is_looping && wave_buffer.buffer_sz) {
221 SetWaveIndex(wave_index + 1); 221 SetWaveIndex(wave_index + 1);
222 } 222 }
223 223
224 out_status.wave_buffer_consumed++; 224 if (wave_buffer.buffer_sz) {
225 out_status.wave_buffer_consumed++;
226 }
225 227
226 if (wave_buffer.end_of_stream) { 228 if (wave_buffer.end_of_stream || !wave_buffer.buffer_sz) {
227 info.play_state = PlayState::Paused; 229 info.play_state = PlayState::Paused;
228 } 230 }
229 } 231 }