Module: wine Branch: master Commit: 0d567ff9f8479fcb7afce7c74afb1b33aabc766d URL: http://source.winehq.org/git/wine.git/?a=commit;h=0d567ff9f8479fcb7afce7c74a...
Author: Andrew Eikum aeikum@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: