Maarten Lankhorst : mmdevapi: Fix small capture bugs.

Alexandre Julliard julliard at winehq.org
Wed Apr 21 10:40:25 CDT 2010


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

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Wed Apr 21 13:21:17 2010 +0200

mmdevapi: Fix small capture bugs.

---

 dlls/mmdevapi/audio.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/dlls/mmdevapi/audio.c b/dlls/mmdevapi/audio.c
index 4a7a4c6..2781125 100644
--- a/dlls/mmdevapi/audio.c
+++ b/dlls/mmdevapi/audio.c
@@ -633,7 +633,7 @@ static HRESULT WINAPI AC_GetCurrentPadding(IAudioClient *iface, UINT32 *numpad)
             if (ofs + avail <= This->bufsize)
                 palcCaptureSamples(This->capdev, buf1, avail);
             else {
-                DWORD part1 = This->bufsize - This->ofs;
+                DWORD part1 = This->bufsize - ofs;
                 palcCaptureSamples(This->capdev, buf1, part1);
                 palcCaptureSamples(This->capdev, This->buffer, avail - part1);
             }
@@ -648,7 +648,7 @@ static HRESULT WINAPI AC_GetCurrentPadding(IAudioClient *iface, UINT32 *numpad)
                 if (rest)
                     This->ofs += psize - rest;
                 This->ofs %= This->bufsize;
-                This->pad = This->bufsize - rest;
+                This->pad = This->bufsize;
             }
         }
         if (This->pad >= psize)
@@ -1224,6 +1224,7 @@ static HRESULT WINAPI ACC_GetBuffer(IAudioCaptureClient *iface, BYTE **data, UIN
         hr = AUDCLNT_S_BUFFER_EMPTY;
 out:
     LeaveCriticalSection(This->parent->crst);
+    TRACE("Returning %08x %i\n", hr, *frames);
     return hr;
 }
 
@@ -1232,15 +1233,15 @@ static HRESULT WINAPI ACC_ReleaseBuffer(IAudioCaptureClient *iface, UINT32 writt
     ACCapture *This = (ACCapture*)iface;
     HRESULT hr = S_OK;
     EnterCriticalSection(This->parent->crst);
-    if (!written || written == This->parent->locked)
+    if (!written || written == This->parent->locked) {
         This->parent->locked = 0;
-    else if (!This->parent->locked)
+        This->parent->ofs += written;
+        This->parent->ofs %= This->parent->bufsize;
+        This->parent->pad -= written;
+    } else if (!This->parent->locked)
         hr = AUDCLNT_E_OUT_OF_ORDER;
     else
         hr = AUDCLNT_E_INVALID_SIZE;
-    This->parent->ofs += written;
-    This->parent->ofs %= This->parent->bufsize;
-    This->parent->pad -= written;
     LeaveCriticalSection(This->parent->crst);
     return hr;
 }




More information about the wine-cvs mailing list