Maarten Lankhorst : winealsa.drv: Add ability to recover from underruns to directsound driver.
Module: wine Branch: master Commit: 2cd620802a3a7a1011a89c301270737ac1a1cfe5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2cd620802a3a7a1011a89c3012... Author: Maarten Lankhorst <m.b.lankhorst(a)gmail.com> Date: Fri Aug 8 20:50:02 2008 +0200 winealsa.drv: Add ability to recover from underruns to directsound driver. Fixes handling of buffer underruns that might still occur. --- dlls/winealsa.drv/dsoutput.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/dlls/winealsa.drv/dsoutput.c b/dlls/winealsa.drv/dsoutput.c index 130e181..72fc0a7 100644 --- a/dlls/winealsa.drv/dsoutput.c +++ b/dlls/winealsa.drv/dsoutput.c @@ -548,7 +548,13 @@ static HRESULT WINAPI IDsDriverBufferImpl_GetPosition(PIDSDRIVERBUFFER iface, } if (state == SND_PCM_STATE_RUNNING) { - snd_pcm_uframes_t used = This->mmap_buflen_frames - snd_pcm_avail_update(This->pcm); + snd_pcm_sframes_t used = This->mmap_buflen_frames - snd_pcm_avail_update(This->pcm); + + if (used < 0) + { + snd_pcm_forward(This->pcm, -used); + used = 0; + } if (This->mmap_pos > used) hw_pptr = This->mmap_pos - used;
participants (1)
-
Alexandre Julliard