The new test failures are expected since the renderers are now actually considered renderers by the filter graph. Signed-off-by: Anton Baskanov <baskanov(a)gmail.com> --- dlls/quartz/filtergraph.c | 7 +++++++ dlls/quartz/tests/dsoundrender.c | 8 ++++---- dlls/quartz/tests/filtergraph.c | 4 ++-- dlls/quartz/tests/videorenderer.c | 8 ++++---- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c index 825bef9e12e..f509bdad332 100644 --- a/dlls/quartz/filtergraph.c +++ b/dlls/quartz/filtergraph.c @@ -565,6 +565,7 @@ static void update_seeking(struct filter *filter) static BOOL is_renderer(struct filter *filter) { + IMediaPosition *media_position; IAMFilterMiscFlags *flags; BOOL ret = FALSE; @@ -574,6 +575,12 @@ static BOOL is_renderer(struct filter *filter) ret = TRUE; IAMFilterMiscFlags_Release(flags); } + else if (SUCCEEDED(IBaseFilter_QueryInterface(filter->filter, &IID_IMediaPosition, (void **)&media_position))) + { + if (!has_output_pins(filter->filter)) + ret = TRUE; + IMediaPosition_Release(media_position); + } else { update_seeking(filter); diff --git a/dlls/quartz/tests/dsoundrender.c b/dlls/quartz/tests/dsoundrender.c index e591e1832d5..87c3706b145 100644 --- a/dlls/quartz/tests/dsoundrender.c +++ b/dlls/quartz/tests/dsoundrender.c @@ -920,7 +920,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control) hr = IMediaControl_GetState(control, 1000, &state); ok(hr == S_OK, "Got hr %#x.\n", hr); ret = check_ec_complete(eventsrc, 0); - ok(!ret, "Got unexpected EC_COMPLETE.\n"); + todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n"); hr = send_frame(input); todo_wine ok(hr == VFW_E_SAMPLE_REJECTED_EOS, "Got hr %#x.\n", hr); @@ -952,7 +952,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control) hr = IPin_EndOfStream(pin); ok(hr == S_OK, "Got hr %#x.\n", hr); ret = check_ec_complete(eventsrc, 0); - ok(!ret, "Got unexpected EC_COMPLETE.\n"); + todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n"); ret = check_ec_complete(eventsrc, 2000); todo_wine ok(ret == 1, "Expected EC_COMPLETE.\n"); @@ -978,7 +978,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control) hr = IMediaControl_Stop(control); ok(hr == S_OK, "Got hr %#x.\n", hr); ret = check_ec_complete(eventsrc, 0); - ok(!ret, "Got unexpected EC_COMPLETE.\n"); + todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n"); /* Test sending EOS and then flushing or stopping. */ @@ -996,7 +996,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control) hr = IPin_EndOfStream(pin); ok(hr == S_OK, "Got hr %#x.\n", hr); ret = check_ec_complete(eventsrc, 0); - ok(!ret, "Got unexpected EC_COMPLETE.\n"); + todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n"); hr = IPin_BeginFlush(pin); ok(hr == S_OK, "Got hr %#x.\n", hr); diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c index 7f3372e2acf..fdcfcead0be 100644 --- a/dlls/quartz/tests/filtergraph.c +++ b/dlls/quartz/tests/filtergraph.c @@ -4154,7 +4154,7 @@ static void test_ec_complete(void) IFilterGraph2_AddFilter(graph, &filter1.IBaseFilter_iface, NULL); hr = check_ec_complete(graph, &filter1.IBaseFilter_iface); - todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(hr == S_OK, "Got hr %#x.\n", hr); IFilterGraph2_RemoveFilter(graph, &filter1.IBaseFilter_iface); @@ -4174,7 +4174,7 @@ static void test_ec_complete(void) IFilterGraph2_AddFilter(graph, &filter1.IBaseFilter_iface, NULL); hr = check_ec_complete(graph, &filter1.IBaseFilter_iface); - todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(hr == S_OK, "Got hr %#x.\n", hr); IMediaControl_Release(control); IMediaEvent_Release(eventsrc); diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c index 22cc703a539..470652543ad 100644 --- a/dlls/quartz/tests/videorenderer.c +++ b/dlls/quartz/tests/videorenderer.c @@ -1143,7 +1143,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control) hr = IMediaControl_GetState(control, 1000, &state); ok(hr == S_OK, "Got hr %#x.\n", hr); ret = check_ec_complete(eventsrc, 0); - ok(!ret, "Got unexpected EC_COMPLETE.\n"); + todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n"); hr = join_thread(send_frame(input)); todo_wine ok(hr == E_UNEXPECTED, "Got hr %#x.\n", hr); @@ -1173,7 +1173,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control) hr = IPin_EndOfStream(pin); ok(hr == S_OK, "Got hr %#x.\n", hr); ret = check_ec_complete(eventsrc, 0); - ok(!ret, "Got unexpected EC_COMPLETE.\n"); + todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n"); ret = check_ec_complete(eventsrc, 1600); todo_wine ok(ret == 1, "Expected EC_COMPLETE.\n"); @@ -1199,7 +1199,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control) hr = IMediaControl_Stop(control); ok(hr == S_OK, "Got hr %#x.\n", hr); ret = check_ec_complete(eventsrc, 0); - ok(!ret, "Got unexpected EC_COMPLETE.\n"); + todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n"); /* Test sending EOS and then flushing or stopping. */ @@ -1213,7 +1213,7 @@ static void test_eos(IPin *pin, IMemInputPin *input, IMediaControl *control) hr = IPin_EndOfStream(pin); ok(hr == S_OK, "Got hr %#x.\n", hr); ret = check_ec_complete(eventsrc, 0); - ok(!ret, "Got unexpected EC_COMPLETE.\n"); + todo_wine ok(!ret, "Got unexpected EC_COMPLETE.\n"); hr = IPin_BeginFlush(pin); ok(hr == S_OK, "Got hr %#x.\n", hr); -- 2.25.1