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 42a3976daac..97d22b50bb0 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_connect(struct strmbase_sink *iface, IPin *peer, const AM_MEDIA_TYPE *mt) { FIXME("stub\n"); @@ -49,6 +62,7 @@ static HRESULT color_sink_connect(struct strmbase_sink *iface, IPin *peer, const static const struct strmbase_sink_ops sink_ops = { + .base.pin_query_interface = color_sink_query_interface, .sink_connect = color_sink_connect, }; diff --git a/dlls/quartz/tests/colorconv.c b/dlls/quartz/tests/colorconv.c index 4f03f7228df..58f2d4884e2 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 @@ -2273,7 +2272,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