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 ca22f6bdb24..47b9fae6d9b 100644 --- a/dlls/quartz/colorconv.c +++ b/dlls/quartz/colorconv.c @@ -554,12 +554,23 @@ static HRESULT WINAPI color_sink_Receive(struct strmbase_sink *iface, IMediaSamp return hr; } +static HRESULT color_sink_receive_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, .base.pin_query_accept = color_sink_query_accept, .pfnReceive = color_sink_Receive, .sink_connect = color_sink_connect, + .sink_receive_can_block = color_sink_receive_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 6a10391a54b..3dd4c912cc8 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