Sagar Mittal : quartz: DSoundRender: Do not overwrite a full buffer.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Aug 18 14:20:56 CDT 2006


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

Author: Sagar Mittal <sagar.mittal at gmail.com>
Date:   Fri Aug 18 12:38:38 2006 -0400

quartz: DSoundRender: Do not overwrite a full buffer.

---

 dlls/quartz/dsoundrender.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c
index c095f7e..dfc285f 100644
--- a/dlls/quartz/dsoundrender.c
+++ b/dlls/quartz/dsoundrender.c
@@ -179,6 +179,13 @@ static HRESULT DSoundRender_SendSampleDa
         else
              buf_free = DSBUFFERSIZE - This->write_pos + play_pos;
 
+        /* This situation is ambiguous; Assume full when playing */
+        if(buf_free == DSBUFFERSIZE && This->started)
+        {
+            Sleep(10);
+            continue;
+        }
+
         size2 = min(buf_free, size);
         hr = IDirectSoundBuffer_Lock(This->dsbuffer, This->write_pos, size2, &lpbuf1, &dwsize1, &lpbuf2, &dwsize2, 0);
         if (hr != DS_OK) {




More information about the wine-cvs mailing list