Maarten Lankhorst : winealsa.drv: Add ability to recover from underruns to directsound driver.

Alexandre Julliard julliard at winehq.org
Mon Aug 18 10:46:08 CDT 2008


Module: wine
Branch: master
Commit: 2cd620802a3a7a1011a89c301270737ac1a1cfe5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2cd620802a3a7a1011a89c301270737ac1a1cfe5

Author: Maarten Lankhorst <m.b.lankhorst at 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;




More information about the wine-cvs mailing list