diff options
| author | 2019-07-01 21:20:23 +1000 | |
|---|---|---|
| committer | 2019-07-01 21:20:23 +1000 | |
| commit | b82b5e46e7c7ab259110fe49712f29220727d762 (patch) | |
| tree | 7280d5ac099796391842ef2157d578378413e08b /src/audio_core/audio_renderer.cpp | |
| parent | Merge pull request #2583 from FernandoS27/core-timing-safe (diff) | |
| download | yuzu-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.cpp | 8 |
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 | } |