citra-emu
/
citra-canary
Archived
1
0
Fork 0

Audio/HLE/Source: Fix looped state not updating

Bugfix for ff280800.
This commit is contained in:
MerryMage 2017-11-25 11:10:10 +00:00
parent b7cf793814
commit 8a5cc14ba4
1 changed files with 5 additions and 6 deletions

View File

@ -277,11 +277,7 @@ bool Source::DequeueBuffer() {
return false; return false;
Buffer buf = state.input_queue.top(); Buffer buf = state.input_queue.top();
state.input_queue.pop();
// if we're in a loop, the current sound keeps playing afterwards, so leave the queue alone
if (!buf.is_looping) {
state.input_queue.pop();
}
if (buf.adpcm_dirty) { if (buf.adpcm_dirty) {
state.adpcm_state.yn1 = buf.adpcm_yn[0]; state.adpcm_state.yn1 = buf.adpcm_yn[0];
@ -321,7 +317,10 @@ bool Source::DequeueBuffer() {
state.current_buffer_id = buf.buffer_id; state.current_buffer_id = buf.buffer_id;
state.buffer_update = buf.from_queue && !buf.has_played; state.buffer_update = buf.from_queue && !buf.has_played;
buf.has_played = true; if (buf.is_looping) {
buf.has_played = true;
state.input_queue.push(buf);
}
LOG_TRACE(Audio_DSP, "source_id=%zu buffer_id=%hu from_queue=%s current_buffer.size()=%zu", LOG_TRACE(Audio_DSP, "source_id=%zu buffer_id=%hu from_queue=%s current_buffer.size()=%zu",
source_id, buf.buffer_id, buf.from_queue ? "true" : "false", source_id, buf.buffer_id, buf.from_queue ? "true" : "false",