Andrew Eikum : winmm: Also track input device position.
Alexandre Julliard
julliard at winehq.org
Wed Oct 12 14:31:17 CDT 2011
Module: wine
Branch: master
Commit: 0d567ff9f8479fcb7afce7c74afb1b33aabc766d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0d567ff9f8479fcb7afce7c74afb1b33aabc766d
Author: Andrew Eikum <aeikum at codeweavers.com>
Date: Tue Oct 11 15:32:10 2011 -0500
winmm: Also track input device position.
---
dlls/winmm/tests/capture.c | 7 +++++++
dlls/winmm/waveform.c | 4 ++++
2 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/dlls/winmm/tests/capture.c b/dlls/winmm/tests/capture.c
index 2860b00..b43bb71 100644
--- a/dlls/winmm/tests/capture.c
+++ b/dlls/winmm/tests/capture.c
@@ -133,6 +133,7 @@ static void wave_in_test_deviceIn(int device, LPWAVEFORMATEX pwfx, DWORD format,
WAVEHDR frag;
MMRESULT rc;
DWORD res;
+ MMTIME mmt;
WORD nChannels = pwfx->nChannels;
WORD wBitsPerSample = pwfx->wBitsPerSample;
DWORD nSamplesPerSec = pwfx->nSamplesPerSec;
@@ -224,6 +225,12 @@ static void wave_in_test_deviceIn(int device, LPWAVEFORMATEX pwfx, DWORD format,
"frag.dwBytesRecorded=%d, should=%d\n",
frag.dwBytesRecorded,pwfx->nAvgBytesPerSec);
+ mmt.wType = TIME_SAMPLES;
+ rc=waveInGetPosition(win, &mmt, sizeof(mmt));
+ ok(rc==MMSYSERR_NOERROR,"waveInGetPosition(%s): rc=%s\n",
+ dev_name(device),wave_in_error(rc));
+ ok(mmt.u.cb == frag.dwBytesRecorded, "Got wrong position: %u\n", mmt.u.cb);
+
/* stop playing on error */
if (res!=WAIT_OBJECT_0) {
rc=waveInStop(win);
diff --git a/dlls/winmm/waveform.c b/dlls/winmm/waveform.c
index 658fd24..372501c 100644
--- a/dlls/winmm/waveform.c
+++ b/dlls/winmm/waveform.c
@@ -1495,6 +1495,8 @@ static void WID_PullACMData(WINMM_Device *device)
hr = IAudioCaptureClient_ReleaseBuffer(device->capture, packet);
if(FAILED(hr))
ERR("ReleaseBuffer failed: %08x\n", hr);
+
+ device->played_frames += packet;
}
queue = device->first;
@@ -1602,6 +1604,8 @@ static void WID_PullData(WINMM_Device *device)
hr = IAudioCaptureClient_ReleaseBuffer(device->capture, packet_len);
if(FAILED(hr))
ERR("ReleaseBuffer failed: %08x\n", hr);
+
+ device->played_frames += packet_len;
}
exit:
More information about the wine-cvs
mailing list