[PATCH] dsound: Fix IDsCaptureBuffer_GetCurrentPosition

Maarten Lankhorst maarten at codeweavers.com
Mon Oct 1 08:07:59 CDT 2007


---
 dlls/dsound/capture.c |   19 ++++++++-----------
 1 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/dlls/dsound/capture.c b/dlls/dsound/capture.c
index f0b230d..9de2ecd 100644
--- a/dlls/dsound/capture.c
+++ b/dlls/dsound/capture.c
@@ -919,25 +919,22 @@ IDirectSoundCaptureBufferImpl_GetCurrentPosition(
 	if (hres != DS_OK)
 	    WARN("IDsCaptureDriverBuffer_GetPosition failed\n");
     } else if (This->device->hwi) {
-	DWORD pos;
+        DWORD pos;
 
-	EnterCriticalSection(&This->device->lock);
-	pos = (DWORD_PTR)This->device->pwave[This->device->index].lpData - (DWORD_PTR)This->device->buffer;
-	TRACE("old This->device->state=%s\n",captureStateString[This->device->state]);
+        EnterCriticalSection(&This->device->lock);
+        pos = (DWORD_PTR)This->device->pwave[This->device->index].lpData - (DWORD_PTR)This->device->buffer;
         if (lpdwCapturePosition)
-            *lpdwCapturePosition = pos;
+            *lpdwCapturePosition = (This->device->pwave[This->device->index].dwBufferLength + pos) % This->device->buflen;
+        if (lpdwReadPosition)
+            *lpdwReadPosition = pos;
+        LeaveCriticalSection(&This->device->lock);
 
-	if (lpdwReadPosition)
-            *lpdwReadPosition = (This->device->pwave[This->device->index].dwBufferLength + pos) % This->device->buflen;
-	LeaveCriticalSection(&This->device->lock);
-
-	if (lpdwCapturePosition) TRACE("*lpdwCapturePosition=%d\n",*lpdwCapturePosition);
-	if (lpdwReadPosition) TRACE("*lpdwReadPosition=%d\n",*lpdwReadPosition);
     } else {
         WARN("no driver\n");
         hres = DSERR_NODRIVER;
     }
 
+    TRACE("cappos=%d readpos=%d\n", (lpdwCapturePosition?*lpdwCapturePosition:-1), (lpdwReadPosition?*lpdwReadPosition:-1));
     TRACE("returning %08x\n", hres);
     return hres;
 }
-- 
1.5.2.5


--------------000005040404040107030007--



More information about the wine-patches mailing list