Merge pull request #3151 from MerryMage/looping-bug
Audio/HLE/Source: Fix looped state not updating
This commit is contained in:
commit
16dcec05d1
@ -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",
|
||||||
|
Loading…
Reference in New Issue
Block a user