From: Brendan McGrath <bmcgrath@codeweavers.com> --- dlls/quartz/colorconv.c | 11 +++++++++++ dlls/quartz/tests/colorconv.c | 1 - 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/dlls/quartz/colorconv.c b/dlls/quartz/colorconv.c index b810e16a542..6eacf78a88d 100644 --- a/dlls/quartz/colorconv.c +++ b/dlls/quartz/colorconv.c @@ -574,6 +574,16 @@ static HRESULT WINAPI color_sink_Receive(struct strmbase_sink *iface, IMediaSamp return hr; } +HRESULT color_sink_can_block(struct strmbase_sink *iface) +{ + struct color_converter *filter = impl_from_strmbase_filter(iface->pin.filter); + + if (!filter->source.pMemInputPin) + return VFW_E_NOT_CONNECTED; + + return IMemInputPin_ReceiveCanBlock(filter->source.pMemInputPin); +} + static const struct strmbase_sink_ops sink_ops = { .base.pin_query_interface = color_sink_query_interface, @@ -581,6 +591,7 @@ static const struct strmbase_sink_ops sink_ops = .pfnReceive = color_sink_Receive, .sink_connect = color_sink_connect, .sink_end_flush = color_sink_end_flush, + .sink_receive_can_block = color_sink_can_block, }; static HRESULT color_source_query_interface(struct strmbase_pin *iface, REFIID iid, void **out) diff --git a/dlls/quartz/tests/colorconv.c b/dlls/quartz/tests/colorconv.c index b85a4da1c5e..18a609bd9cd 100644 --- a/dlls/quartz/tests/colorconv.c +++ b/dlls/quartz/tests/colorconv.c @@ -1831,7 +1831,6 @@ static void test_sample_processing( testsink->can_block = S_FALSE; hr = IMemInputPin_ReceiveCanBlock(input); - todo_wine ok(hr == S_FALSE, "Got hr %#lx.\n", hr); sink_allocator = mem_allocator_from_IMemAllocator(testsink->sink.pAllocator); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11679