From 315cf3b60fbea22092c399cdcf58654f2545cf88 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 17 Nov 2020 13:41:36 +0300 Subject: [PATCH] evr/mixer: Improve GetService() handling of unsupported interfaces/services. Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- dlls/evr/mixer.c | 4 +++- dlls/evr/tests/evr.c | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/evr/mixer.c b/dlls/evr/mixer.c index ddf34d05f44..a7ce3949bec 100644 --- a/dlls/evr/mixer.c +++ b/dlls/evr/mixer.c @@ -1650,11 +1650,13 @@ static HRESULT WINAPI video_mixer_getservice_GetService(IMFGetService *iface, RE { return IMFGetService_QueryInterface(iface, riid, obj); } + + return E_NOINTERFACE; } FIXME("Unsupported service %s, riid %s.\n", debugstr_guid(service), debugstr_guid(riid)); - return E_NOTIMPL; + return MF_E_UNSUPPORTED_SERVICE; } static const IMFGetServiceVtbl video_mixer_getservice_vtbl = diff --git a/dlls/evr/tests/evr.c b/dlls/evr/tests/evr.c index c83ce0374eb..60d74d1a224 100644 --- a/dlls/evr/tests/evr.c +++ b/dlls/evr/tests/evr.c @@ -489,6 +489,10 @@ static void test_default_mixer(void) check_service_interface(transform, &MR_VIDEO_MIXER_SERVICE, &IID_IMFVideoProcessor, TRUE); check_service_interface(transform, &MR_VIDEO_MIXER_SERVICE, &IID_IMFVideoMixerControl, TRUE); check_service_interface(transform, &MR_VIDEO_MIXER_SERVICE, &IID_IMFVideoPositionMapper, TRUE); + check_service_interface(transform, &MR_VIDEO_MIXER_SERVICE, &IID_IMFTransform, FALSE); + + hr = MFGetService((IUnknown *)transform, &MR_VIDEO_RENDER_SERVICE, &IID_IUnknown, (void **)&unk); + ok(hr == MF_E_UNSUPPORTED_SERVICE, "Unexpected hr %#x.\n", hr); if (SUCCEEDED(MFGetService((IUnknown *)transform, &MR_VIDEO_MIXER_SERVICE, &IID_IMFVideoMixerControl2, (void **)&mixer_control2))) {