[PATCH v2 2/4] mf/tests: Check that the sample grabber generates stream sink events.

Nikolay Sivov nsivov at codeweavers.com
Fri May 28 03:32:58 CDT 2021



On 5/28/21 10:50 AM, Giovanni Mascellani wrote:
> +#define expect_event(s, m) expect_event_(__LINE__, s, m)
> +static void expect_event_(int line, IMFStreamSink *stream, MediaEventType met)
> +{
> +    HRESULT hr, hr2;
> +    IMFMediaEvent *event;
> +    MediaEventType got_met;
> +
> +    hr = IMFStreamSink_GetEvent(stream, 0, &event);
> +    ok_(__FILE__, line)(hr == S_OK, "Cannot get event, hr %#x.\n", hr);
> +    ok_(__FILE__, line)(event != NULL, "Got NULL event.\n");
> +
> +    hr = IMFMediaEvent_GetStatus(event, &hr2);
> +    ok_(__FILE__, line)(hr == S_OK, "Cannot get status, hr %#x.\n", hr);
> +    ok_(__FILE__, line)(hr2 == S_OK, "Unexpected status, hr %#x.\n", hr2);
> +
> +    hr = IMFMediaEvent_GetType(event, &got_met);
> +    ok_(__FILE__, line)(hr == S_OK, "Cannot get type, hr %#x.\n", hr);
> +    ok_(__FILE__, line)(got_met == met, "Unexpected event type %d instead of %d.\n", got_met, met);
> +
> +    IMFMediaEvent_Release(event);
> +}
I don't think we want that, it's blocking, so can potentially hang the
test program, and you won't know where that happened.

> +    for (i = 0; i < 4; i++)
> +        expect_event(stream, MEStreamSinkRequestSample);
> +    expect_event(stream, MEStreamSinkStarted);
Same here, the test only cares for state changes, and checking for
everything exposes this improvised on-start prerolling.



More information about the wine-devel mailing list