Nikolay Sivov : evr/mixer: Improve GetService() handling of unsupported interfaces/services.

Alexandre Julliard julliard at winehq.org
Tue Nov 17 15:04:07 CST 2020


Module: wine
Branch: master
Commit: 315cf3b60fbea22092c399cdcf58654f2545cf88
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=315cf3b60fbea22092c399cdcf58654f2545cf88

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Nov 17 13:41:36 2020 +0300

evr/mixer: Improve GetService() handling of unsupported interfaces/services.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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)))
     {




More information about the wine-cvs mailing list