Module: wine Branch: oldstable Commit: 0d57e76476393a0b13e3ad1142a0cf931776411d URL: https://source.winehq.org/git/wine.git/?a=commit;h=0d57e76476393a0b13e3ad114...
Author: Andrew Eikum aeikum@codeweavers.com Date: Mon Dec 11 10:41:35 2017 -0600
xaudio2: Account for abandoned buffer bytes.
This should fix bug 44148, a regression caused by e2c73fc394ba.
Signed-off-by: Andrew Eikum aeikum@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit f57246e5e55a6ea65a35458a7256c8547ccc5462) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
dlls/xaudio2_7/xaudio_dll.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c index c2d2ee2..f641046 100644 --- a/dlls/xaudio2_7/xaudio_dll.c +++ b/dlls/xaudio2_7/xaudio_dll.c @@ -2277,13 +2277,14 @@ static void update_source_state(XA2SourceImpl *src) src->first_al_buf %= XAUDIO2_MAX_QUEUED_BUFFERS; src->al_bufs_used -= processed;
- if(processed > src->abandoned_albufs){ - for(i = src->abandoned_albufs; i < processed; ++i){ - ALint bufsize; + for(i = 0; i < processed; ++i){ + ALint bufsize;
- alGetBufferi(al_buffers[i], AL_SIZE, &bufsize); + alGetBufferi(al_buffers[i], AL_SIZE, &bufsize);
- src->in_al_bytes -= bufsize; + src->in_al_bytes -= bufsize; + + if(src->abandoned_albufs == 0){ src->played_frames += bufsize / src->submit_blocksize;
if(al_buffers[i] == src->buffers[src->first_buf].latest_al_buf){ @@ -2309,11 +2310,10 @@ static void update_source_state(XA2SourceImpl *src) src->buffers[src->first_buf].xa2buffer.pContext); } } + }else{ + src->abandoned_albufs--; } - - src->abandoned_albufs = 0; - }else - src->abandoned_albufs -= processed; + } }
if(!src->running)