quartz: Forward requests for MediaSeeking from all pins properly.
diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c
index 868c625..17861a0 100644
--- a/dlls/quartz/parser.c
+++ b/dlls/quartz/parser.c
@@ -628,7 +628,7 @@
*ppv = (LPVOID)iface;
else if (IsEqualIID(riid, &IID_IMediaSeeking))
{
- return IBaseFilter_QueryInterface((IBaseFilter*)&This->pin.pin.pinInfo.pFilter, &IID_IMediaSeeking, ppv);
+ return IBaseFilter_QueryInterface(This->pin.pin.pinInfo.pFilter, &IID_IMediaSeeking, ppv);
}
if (*ppv)
diff --git a/dlls/quartz/pin.c b/dlls/quartz/pin.c
index 878f53a..e8d0f44 100644
--- a/dlls/quartz/pin.c
+++ b/dlls/quartz/pin.c
@@ -507,6 +507,10 @@
*ppv = (LPVOID)iface;
else if (IsEqualIID(riid, &IID_IMemInputPin))
*ppv = (LPVOID)&This->lpVtblMemInput;
+ else if (IsEqualIID(riid, &IID_IMediaSeeking))
+ {
+ return IBaseFilter_QueryInterface(This->pin.pinInfo.pFilter, &IID_IMediaSeeking, ppv);
+ }
if (*ppv)
{
@@ -803,6 +807,10 @@
*ppv = (LPVOID)iface;
else if (IsEqualIID(riid, &IID_IPin))
*ppv = (LPVOID)iface;
+ else if (IsEqualIID(riid, &IID_IMediaSeeking))
+ {
+ return IBaseFilter_QueryInterface(This->pin.pinInfo.pFilter, &IID_IMediaSeeking, ppv);
+ }
if (*ppv)
{
@@ -1279,6 +1287,10 @@
*ppv = (LPVOID)iface;
else if (IsEqualIID(riid, &IID_IPin))
*ppv = (LPVOID)iface;
+ else if (IsEqualIID(riid, &IID_IMediaSeeking))
+ {
+ return IBaseFilter_QueryInterface(This->pin.pinInfo.pFilter, &IID_IMediaSeeking, ppv);
+ }
if (*ppv)
{