From: Giovanni Mascellani gmascellani@codeweavers.com
--- dlls/mmdevapi/tests/capture.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/dlls/mmdevapi/tests/capture.c b/dlls/mmdevapi/tests/capture.c index 460d9cfd910..ea72efd9105 100644 --- a/dlls/mmdevapi/tests/capture.c +++ b/dlls/mmdevapi/tests/capture.c @@ -110,6 +110,8 @@ static void test_uninitialized(IAudioClient *ac) struct read_packets_data { UINT64 expected_dev_pos; + BOOL discontinuity_at_0; + BOOL discontinuity_at_later; };
static void read_packets(IAudioClient *ac, IAudioCaptureClient *acc, HANDLE handle, @@ -118,6 +120,9 @@ static void read_packets(IAudioClient *ac, IAudioCaptureClient *acc, HANDLE hand unsigned int idx = 0; HRESULT hr;
+ data->discontinuity_at_0 = FALSE; + data->discontinuity_at_later = FALSE; + while (idx < packet_count) { UINT32 next_packet_size, frames, frames2, padding; @@ -168,6 +173,14 @@ static void read_packets(IAudioClient *ac, IAudioCaptureClient *acc, HANDLE hand ok(padding >= frames, "GetCurrentPadding returns %u, GetBuffer returns %u frames\n", padding, frames);
+ if (flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY) + { + if (idx == 0) + data->discontinuity_at_0 = TRUE; + else + data->discontinuity_at_later = TRUE; + } + if (data->expected_dev_pos != UINT64_MAX) { /* Win <= 8 and some older Win 10 builds sometimes handle discontinuities incorrectly. */ @@ -298,6 +311,10 @@ static void test_capture(IAudioClient *ac, HANDLE handle, WAVEFORMATEX *wfx)
read_packets(ac, acc, handle, 10, &packets_data);
+ todo_wine + ok(packets_data.discontinuity_at_0, "No discontinuity at first packet\n"); + ok(!packets_data.discontinuity_at_later, "Discontinuity at later packet\n"); + winetest_pop_context();
sum = packets_data.expected_dev_pos;