Zebediah Figura : strmbase/transform: Don' t expose IMediaSeeking from the filter.
Alexandre Julliard
julliard at winehq.org
Mon May 20 15:50:47 CDT 2019
Module: wine
Branch: master
Commit: 25c3bf9c10bf7c4372acb7c55a32bd461b88183f
URL: https://source.winehq.org/git/wine.git/?a=commit;h=25c3bf9c10bf7c4372acb7c55a32bd461b88183f
Author: Zebediah Figura <z.figura12 at gmail.com>
Date: Sat May 18 21:38:47 2019 -0500
strmbase/transform: Don't expose IMediaSeeking from the filter.
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/quartz/tests/acmwrapper.c | 4 ++--
dlls/quartz/tests/avidec.c | 4 ++--
dlls/strmbase/transform.c | 25 ++++++++++++++++++++++---
3 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/dlls/quartz/tests/acmwrapper.c b/dlls/quartz/tests/acmwrapper.c
index a543893..5acc91e 100644
--- a/dlls/quartz/tests/acmwrapper.c
+++ b/dlls/quartz/tests/acmwrapper.c
@@ -74,7 +74,7 @@ static void test_interfaces(void)
check_interface(filter, &IID_IBasicVideo, FALSE);
check_interface(filter, &IID_IKsPropertySet, FALSE);
todo_wine check_interface(filter, &IID_IMediaPosition, FALSE);
- todo_wine check_interface(filter, &IID_IMediaSeeking, FALSE);
+ check_interface(filter, &IID_IMediaSeeking, FALSE);
check_interface(filter, &IID_IPin, FALSE);
todo_wine check_interface(filter, &IID_IQualityControl, FALSE);
check_interface(filter, &IID_IQualProp, FALSE);
@@ -89,7 +89,7 @@ static void test_interfaces(void)
check_interface(pin, &IID_IUnknown, TRUE);
check_interface(pin, &IID_IMediaPosition, FALSE);
- todo_wine check_interface(pin, &IID_IMediaSeeking, FALSE);
+ check_interface(pin, &IID_IMediaSeeking, FALSE);
IPin_Release(pin);
diff --git a/dlls/quartz/tests/avidec.c b/dlls/quartz/tests/avidec.c
index e897af4..ffea059 100644
--- a/dlls/quartz/tests/avidec.c
+++ b/dlls/quartz/tests/avidec.c
@@ -98,7 +98,7 @@ static void test_interfaces(void)
check_interface(filter, &IID_IBasicVideo, FALSE);
check_interface(filter, &IID_IKsPropertySet, FALSE);
todo_wine check_interface(filter, &IID_IMediaPosition, FALSE);
- todo_wine check_interface(filter, &IID_IMediaSeeking, FALSE);
+ check_interface(filter, &IID_IMediaSeeking, FALSE);
check_interface(filter, &IID_IPersistPropertyBag, FALSE);
check_interface(filter, &IID_IPin, FALSE);
todo_wine check_interface(filter, &IID_IQualityControl, FALSE);
@@ -114,7 +114,7 @@ static void test_interfaces(void)
check_interface(pin, &IID_IUnknown, TRUE);
check_interface(pin, &IID_IMediaPosition, FALSE);
- todo_wine check_interface(pin, &IID_IMediaSeeking, FALSE);
+ check_interface(pin, &IID_IMediaSeeking, FALSE);
IPin_Release(pin);
diff --git a/dlls/strmbase/transform.c b/dlls/strmbase/transform.c
index df16b67..fa9abb0 100644
--- a/dlls/strmbase/transform.c
+++ b/dlls/strmbase/transform.c
@@ -172,8 +172,7 @@ static HRESULT WINAPI TransformFilterImpl_QueryInterface(IBaseFilter * iface, RE
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
- else if (IsEqualIID(riid, &IID_IMediaSeeking) ||
- IsEqualIID(riid, &IID_IMediaPosition))
+ else if (IsEqualIID(riid, &IID_IMediaPosition))
{
return IUnknown_QueryInterface(This->seekthru_unk, riid, ppv);
}
@@ -558,9 +557,29 @@ static const IPinVtbl TransformFilter_InputPin_Vtbl =
TransformFilter_InputPin_NewSegment
};
+static HRESULT WINAPI transform_source_QueryInterface(IPin *iface, REFIID iid, void **out)
+{
+ TransformFilter *filter = impl_from_IBaseFilter(impl_BaseOutputPin_from_IPin(iface)->pin.pinInfo.pFilter);
+ if (IsEqualGUID(iid, &IID_IUnknown) || IsEqualGUID(iid, &IID_IPin))
+ *out = iface;
+ else if (IsEqualGUID(iid, &IID_IQualityControl))
+ *out = &filter->qcimpl->IQualityControl_iface;
+ else if (IsEqualGUID(iid, &IID_IMediaSeeking))
+ return IUnknown_QueryInterface(filter->seekthru_unk, iid, out);
+ else
+ {
+ WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
+ *out = NULL;
+ return E_NOINTERFACE;
+ }
+
+ IUnknown_AddRef((IUnknown *)*out);
+ return S_OK;
+}
+
static const IPinVtbl TransformFilter_OutputPin_Vtbl =
{
- BaseOutputPinImpl_QueryInterface,
+ transform_source_QueryInterface,
BasePinImpl_AddRef,
BaseOutputPinImpl_Release,
BaseOutputPinImpl_Connect,
More information about the wine-cvs
mailing list