diff options
Diffstat (limited to 'src/plugins/directshow/common/directshowmediatypeenum.cpp')
-rw-r--r-- | src/plugins/directshow/common/directshowmediatypeenum.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/plugins/directshow/common/directshowmediatypeenum.cpp b/src/plugins/directshow/common/directshowmediatypeenum.cpp index 8fbdf7dea..a6afcd5f1 100644 --- a/src/plugins/directshow/common/directshowmediatypeenum.cpp +++ b/src/plugins/directshow/common/directshowmediatypeenum.cpp @@ -62,13 +62,18 @@ DirectShowMediaTypeEnum::~DirectShowMediaTypeEnum() m_pin->Release(); } -HRESULT DirectShowMediaTypeEnum::getInterface(REFIID riid, void **ppvObject) +HRESULT DirectShowMediaTypeEnum::QueryInterface(REFIID riid, void **ppv) { - if (riid == IID_IEnumMediaTypes) { - return GetInterface(static_cast<IEnumMediaTypes *>(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_IEnumMediaTypes) + *ppv = static_cast<IEnumMediaTypes *>(this); + else + return E_NOINTERFACE; + AddRef(); + return S_OK; } HRESULT DirectShowMediaTypeEnum::Next(ULONG cMediaTypes, AM_MEDIA_TYPE **ppMediaTypes, ULONG *pcFetched) |