[PATCH 1/2] mmdevapi/tests: Fix capture test that consistently fails on Windows 10
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> --- dlls/mmdevapi/tests/capture.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/dlls/mmdevapi/tests/capture.c b/dlls/mmdevapi/tests/capture.c index 3cdfda1a37..27a5cdc33f 100644 --- a/dlls/mmdevapi/tests/capture.c +++ b/dlls/mmdevapi/tests/capture.c @@ -308,20 +308,17 @@ static void test_capture(IAudioClient *ac, HANDLE handle, WAVEFORMATEX *wfx) hr==S_OK ? (UINT)pos : -1, pad, flags, frames); if(hr == S_OK){ - /* The discontinuity is reported here, but is this an old or new packet? */ - todo_wine_if(!(flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY)) { - /* FIXME: Some drivers fail */ - ok(flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY, "expect DISCONTINUITY %x\n", flags); + if(flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY){ /* Native's position is one period further than what we read. * Perhaps that's precisely the meaning of DATA_DISCONTINUITY: * signal when the position jump left a gap. */ - ok(pos == sum + frames, "Position %u gap %d\n", (UINT)pos, (UINT)pos - sum); + ok(pos == sum + frames, "Position %u last %u frames %u\n", (UINT)pos, sum, frames); + sum = pos; + }else{ /* win10 */ + ok(pos == sum, "Position %u last %u frames %u\n", (UINT)pos, sum, frames); } ok(pad == next, "GCP %u vs. BufferSize %u\n", (UINT32)pad, next); - - if(flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY) - sum = pos; } hr = IAudioCaptureClient_ReleaseBuffer(acc, frames); -- 2.16.1
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> --- dlls/mmdevapi/tests/capture.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/mmdevapi/tests/capture.c b/dlls/mmdevapi/tests/capture.c index 27a5cdc33f..0fa9f0cab8 100644 --- a/dlls/mmdevapi/tests/capture.c +++ b/dlls/mmdevapi/tests/capture.c @@ -413,9 +413,9 @@ static void test_capture(IAudioClient *ac, HANDLE handle, WAVEFORMATEX *wfx) hr = IAudioCaptureClient_GetBuffer(acc, &data, &frames, &flags, &pos, &qpc); ok(hr == S_OK, "Valid IAudioCaptureClient_GetBuffer returns %08x\n", hr); trace("Running position %d pad %u flags %x, amount of frames locked: %u\n", - hr==S_OK ? (UINT)pos : -1, pad, flags, frames); + SUCCEEDED(hr) ? (UINT)pos : -1, pad, flags, frames); - if(hr == S_OK){ + if(SUCCEEDED(hr)){ /* Some w7 machines signal DATA_DISCONTINUITY here following the * previous AUDCLNT_S_BUFFER_EMPTY, others not. What logic? */ ok(pos >= sum, "Position %u gap %d\n", (UINT)pos, (UINT)pos - sum); -- 2.16.1
Hi, While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at https://testbot.winehq.org/JobDetails.pl?Key=36061 Your paranoid android. === w864 (32 bit capture) === capture.c:103: Test failed: Initial IAudioCaptureClient_GetBuffer returns 00000000 capture.c:116: Test failed: Initial IAudioCaptureClient_GetBuffer returns 00000000 capture.c:144: Test failed: GetNextPacketSize 448 vs. GCP 896 === w1064 (64 bit capture) === capture.c:181: Test failed: Position 375 expected 0
2018-02-19 2:40 GMT-07:00 Marvin <testbot(a)winehq.org>:
=== w864 (32 bit capture) === capture.c:103: Test failed: Initial IAudioCaptureClient_GetBuffer returns 00000000 capture.c:116: Test failed: Initial IAudioCaptureClient_GetBuffer returns 00000000 capture.c:144: Test failed: GetNextPacketSize 448 vs. GCP 896
=== w1064 (64 bit capture) === capture.c:181: Test failed: Position 375 expected 0
These are different tests that also fail intermittently. -Alex
Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> On Mon, Feb 19, 2018 at 02:31:30AM -0700, Alex Henrie wrote:
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> --- dlls/mmdevapi/tests/capture.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/mmdevapi/tests/capture.c b/dlls/mmdevapi/tests/capture.c index 27a5cdc33f..0fa9f0cab8 100644 --- a/dlls/mmdevapi/tests/capture.c +++ b/dlls/mmdevapi/tests/capture.c @@ -413,9 +413,9 @@ static void test_capture(IAudioClient *ac, HANDLE handle, WAVEFORMATEX *wfx) hr = IAudioCaptureClient_GetBuffer(acc, &data, &frames, &flags, &pos, &qpc); ok(hr == S_OK, "Valid IAudioCaptureClient_GetBuffer returns %08x\n", hr); trace("Running position %d pad %u flags %x, amount of frames locked: %u\n", - hr==S_OK ? (UINT)pos : -1, pad, flags, frames); + SUCCEEDED(hr) ? (UINT)pos : -1, pad, flags, frames);
- if(hr == S_OK){ + if(SUCCEEDED(hr)){ /* Some w7 machines signal DATA_DISCONTINUITY here following the * previous AUDCLNT_S_BUFFER_EMPTY, others not. What logic? */ ok(pos >= sum, "Position %u gap %d\n", (UINT)pos, (UINT)pos - sum); -- 2.16.1
Hi, While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at https://testbot.winehq.org/JobDetails.pl?Key=36060 Your paranoid android. === w1064 (64 bit capture) === capture.c:181: Test failed: Position 375 expected 0
Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> On Mon, Feb 19, 2018 at 02:31:29AM -0700, Alex Henrie wrote:
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> --- dlls/mmdevapi/tests/capture.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/dlls/mmdevapi/tests/capture.c b/dlls/mmdevapi/tests/capture.c index 3cdfda1a37..27a5cdc33f 100644 --- a/dlls/mmdevapi/tests/capture.c +++ b/dlls/mmdevapi/tests/capture.c @@ -308,20 +308,17 @@ static void test_capture(IAudioClient *ac, HANDLE handle, WAVEFORMATEX *wfx) hr==S_OK ? (UINT)pos : -1, pad, flags, frames);
if(hr == S_OK){ - /* The discontinuity is reported here, but is this an old or new packet? */ - todo_wine_if(!(flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY)) { - /* FIXME: Some drivers fail */ - ok(flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY, "expect DISCONTINUITY %x\n", flags); + if(flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY){ /* Native's position is one period further than what we read. * Perhaps that's precisely the meaning of DATA_DISCONTINUITY: * signal when the position jump left a gap. */ - ok(pos == sum + frames, "Position %u gap %d\n", (UINT)pos, (UINT)pos - sum); + ok(pos == sum + frames, "Position %u last %u frames %u\n", (UINT)pos, sum, frames); + sum = pos; + }else{ /* win10 */ + ok(pos == sum, "Position %u last %u frames %u\n", (UINT)pos, sum, frames); }
ok(pad == next, "GCP %u vs. BufferSize %u\n", (UINT32)pad, next); - - if(flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY) - sum = pos; }
hr = IAudioCaptureClient_ReleaseBuffer(acc, frames); -- 2.16.1
participants (3)
-
Alex Henrie -
Andrew Eikum -
Marvin