[PATCH 2/3] winealsa.drv: Make directsound notice underruns
Maarten Lankhorst (none)
mlankhorst at patser.
Tue Sep 22 12:35:57 CDT 2009
---
dlls/winealsa.drv/dsoutput.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/dlls/winealsa.drv/dsoutput.c b/dlls/winealsa.drv/dsoutput.c
index 9d63475..e5c7d4d 100644
--- a/dlls/winealsa.drv/dsoutput.c
+++ b/dlls/winealsa.drv/dsoutput.c
@@ -405,10 +405,15 @@ static HRESULT WINAPI IDsDriverBufferImpl_Unlock(PIDSDRIVERBUFFER iface,
snd_pcm_prepare(This->pcm);
ret = snd_pcm_writei(This->pcm, pvAudio1, writelen);
snd_pcm_start(This->pcm);
+
+ /* Advance mmap pointer a little to make dsound notice the underrun and respond to it */
+ This->mmap_pos += This->mmap_commitahead + writelen;
+ This->mmap_pos %= This->mmap_buflen_frames;
}
+ else
+ This->mmap_pos += writelen;
if (ret < 0)
WARN("Committing data: %d / %s (%p %ld)\n", ret, snd_strerror(ret), pvAudio1, writelen);
- This->mmap_pos += writelen;
}
if (This->mmap_pos == This->mmap_buflen_frames)
--
1.6.3.3
--------------010907040606020403060501--
More information about the wine-patches
mailing list