[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