diff options
Diffstat (limited to 'src/plugins/directshow/common/directshowpinenum.cpp')
-rw-r--r-- | src/plugins/directshow/common/directshowpinenum.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/plugins/directshow/common/directshowpinenum.cpp b/src/plugins/directshow/common/directshowpinenum.cpp index 910bba77d..e0ab58d19 100644 --- a/src/plugins/directshow/common/directshowpinenum.cpp +++ b/src/plugins/directshow/common/directshowpinenum.cpp @@ -71,13 +71,18 @@ DirectShowPinEnum::~DirectShowPinEnum() m_filter->Release(); } -HRESULT DirectShowPinEnum::getInterface(REFIID riid, void **ppvObject) +HRESULT DirectShowPinEnum::QueryInterface(REFIID riid, void **ppv) { - if (riid == IID_IEnumPins) { - return GetInterface(static_cast<IEnumPins *>(this), ppvObject); - } else { - return DirectShowObject::getInterface(riid, ppvObject); - } + if (ppv == nullptr) + return E_POINTER; + if (riid == IID_IUnknown) + *ppv = static_cast<IUnknown *>(this); + else if (riid == IID_IEnumPins) + *ppv = static_cast<IEnumPins *>(this); + else + return E_NOINTERFACE; + AddRef(); + return S_OK; } HRESULT DirectShowPinEnum::Next(ULONG cPins, IPin **ppPins, ULONG *pcFetched) |