Module: wine Branch: master Commit: 1f93f5350b017cea0881310bc6a373041000a9ef URL: http://source.winehq.org/git/wine.git/?a=commit;h=1f93f5350b017cea0881310bc6...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Oct 15 08:38:55 2014 +0400
msdmo: Implement IEnumDMO_Clone(), fix trace messages.
---
dlls/msdmo/dmoreg.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-)
diff --git a/dlls/msdmo/dmoreg.c b/dlls/msdmo/dmoreg.c index f271da6..e8f67c5 100644 --- a/dlls/msdmo/dmoreg.c +++ b/dlls/msdmo/dmoreg.c @@ -436,43 +436,38 @@ lerr: return hr; }
- /****************************************************************************** * IEnumDMO_fnAddRef */ static ULONG WINAPI IEnumDMO_fnAddRef(IEnumDMO * iface) { IEnumDMOImpl *This = impl_from_IEnumDMO(iface); - return InterlockedIncrement(&This->ref); + ULONG refCount = InterlockedIncrement(&This->ref); + TRACE("(%p)->(%d)\n", This, refCount); + return refCount; }
- /************************************************************************** * EnumDMO_QueryInterface */ -static HRESULT WINAPI IEnumDMO_fnQueryInterface( - IEnumDMO* iface, - REFIID riid, - LPVOID *ppvObj) +static HRESULT WINAPI IEnumDMO_fnQueryInterface(IEnumDMO* iface, REFIID riid, void **ppvObj) { + IEnumDMOImpl *This = impl_from_IEnumDMO(iface); + + TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObj); + *ppvObj = NULL;
if (IsEqualIID(riid, &IID_IEnumDMO) || IsEqualIID(riid, &IID_IUnknown)) { *ppvObj = iface; + IEnumDMO_fnAddRef(iface); }
- if(*ppvObj) - { - IEnumDMO_fnAddRef(*ppvObj); - return S_OK; - } - - return E_NOINTERFACE; + return *ppvObj ? S_OK : E_NOINTERFACE; }
- /****************************************************************************** * IEnumDMO_fnRelease */ @@ -481,6 +476,8 @@ static ULONG WINAPI IEnumDMO_fnRelease(IEnumDMO * iface) IEnumDMOImpl *This = impl_from_IEnumDMO(iface); ULONG refCount = InterlockedDecrement(&This->ref);
+ TRACE("(%p)->(%d)\n", This, refCount); + if (!refCount) { IEnumDMOImpl_Destructor(This); @@ -512,7 +509,7 @@ static HRESULT WINAPI IEnumDMO_fnNext(
IEnumDMOImpl *This = impl_from_IEnumDMO(iface);
- TRACE("--> (%p) %d %p %p %p\n", iface, cItemsToFetch, pCLSID, Names, pcItemsFetched); + TRACE("(%p)->(%d %p %p %p)\n", This, cItemsToFetch, pCLSID, Names, pcItemsFetched);
if (!pCLSID || !Names || !pcItemsFetched) return E_POINTER; @@ -651,6 +648,7 @@ static HRESULT WINAPI IEnumDMO_fnSkip(IEnumDMO * iface, DWORD cItemsToSkip) { IEnumDMOImpl *This = impl_from_IEnumDMO(iface);
+ TRACE("(%p)->(%d)\n", This, cItemsToSkip); This->index += cItemsToSkip;
return S_OK; @@ -664,6 +662,7 @@ static HRESULT WINAPI IEnumDMO_fnReset(IEnumDMO * iface) { IEnumDMOImpl *This = impl_from_IEnumDMO(iface);
+ TRACE("(%p)\n", This); This->index = -1;
return S_OK; @@ -673,13 +672,12 @@ static HRESULT WINAPI IEnumDMO_fnReset(IEnumDMO * iface) /****************************************************************************** * IEnumDMO_fnClone */ -static HRESULT WINAPI IEnumDMO_fnClone(IEnumDMO * iface, IEnumDMO **ppEnum) +static HRESULT WINAPI IEnumDMO_fnClone(IEnumDMO *iface, IEnumDMO **ppEnum) { IEnumDMOImpl *This = impl_from_IEnumDMO(iface); - - FIXME("(%p)->() to (%p)->() E_NOTIMPL\n", This, ppEnum); - - return E_NOTIMPL; + TRACE("(%p)->(%p)\n", This, ppEnum); + return IEnumDMO_Constructor(This->guidCategory, This->dwFlags, This->cInTypes, This->pInTypes, + This->cOutTypes, This->pOutTypes, ppEnum); }