From: Brendan McGrath <bmcgrath@codeweavers.com> --- dlls/quartz/colorconv.c | 14 ++++++++++++++ dlls/quartz/tests/colorconv.c | 2 -- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/dlls/quartz/colorconv.c b/dlls/quartz/colorconv.c index 9c8c227e160..12e10d9731a 100644 --- a/dlls/quartz/colorconv.c +++ b/dlls/quartz/colorconv.c @@ -41,6 +41,19 @@ static struct color_converter *impl_from_strmbase_filter(struct strmbase_filter return CONTAINING_RECORD(iface, struct color_converter, filter); } +static HRESULT color_sink_query_interface(struct strmbase_pin *iface, REFIID iid, void **out) +{ + struct color_converter *filter = impl_from_strmbase_filter(iface->filter); + + if (IsEqualGUID(iid, &IID_IMemInputPin)) + *out = &filter->sink.IMemInputPin_iface; + else + return E_NOINTERFACE; + + IUnknown_AddRef((IUnknown *)*out); + return S_OK; +} + static HRESULT color_sink_query_accept(struct strmbase_pin *iface, const AM_MEDIA_TYPE *mt) { FIXME("stub\n"); @@ -49,6 +62,7 @@ static HRESULT color_sink_query_accept(struct strmbase_pin *iface, const AM_MEDI static const struct strmbase_sink_ops sink_ops = { + .base.pin_query_interface = color_sink_query_interface, .base.pin_query_accept = color_sink_query_accept, }; diff --git a/dlls/quartz/tests/colorconv.c b/dlls/quartz/tests/colorconv.c index 3c29b85294e..ad69ffd19de 100644 --- a/dlls/quartz/tests/colorconv.c +++ b/dlls/quartz/tests/colorconv.c @@ -902,7 +902,6 @@ static void test_interfaces(void) hr = IBaseFilter_FindPin(filter, L"In", &pin); ok(hr == S_OK, "Got hr %#lx.\n", hr); - todo_wine check_interface(pin, &IID_IMemInputPin, TRUE); check_interface(pin, &IID_IPin, TRUE); todo_wine @@ -2275,7 +2274,6 @@ static void test_connect_pin(void) meminput = NULL; hr = IPin_QueryInterface(sink, &IID_IMemInputPin, (void **)&meminput); - todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr); sink_allocator = create_mem_allocator(); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11679