Module: wine Branch: master Commit: fd09c37b4938826732b460e7e0a09606ccb4f2a6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=fd09c37b4938826732b460e7e0...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Feb 21 13:20:18 2017 +0100
ole32: Use generic class factory for StdComponentCategoriesMgr object.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ole32/comcat.c | 78 +-------------------------------------------------- dlls/ole32/moniker.h | 2 +- dlls/ole32/oleproxy.c | 13 ++++++++- 3 files changed, 14 insertions(+), 79 deletions(-)
diff --git a/dlls/ole32/comcat.c b/dlls/ole32/comcat.c index eb5a927..d43c3af 100644 --- a/dlls/ole32/comcat.c +++ b/dlls/ole32/comcat.c @@ -700,53 +700,7 @@ static const ICatInformationVtbl COMCAT_ICatInformation_Vtbl = COMCAT_ICatInformation_EnumReqCategoriesOfClass };
-/********************************************************************** - * COMCAT_IClassFactory_QueryInterface (also IUnknown) - */ -static HRESULT WINAPI COMCAT_IClassFactory_QueryInterface( - LPCLASSFACTORY iface, - REFIID riid, - LPVOID *ppvObj) -{ - TRACE("%s\n",debugstr_guid(riid)); - - if (ppvObj == NULL) return E_POINTER; - - if (IsEqualGUID(riid, &IID_IUnknown) || - IsEqualGUID(riid, &IID_IClassFactory)) - { - *ppvObj = iface; - IClassFactory_AddRef(iface); - return S_OK; - } - - return E_NOINTERFACE; -} - -/********************************************************************** - * COMCAT_IClassFactory_AddRef (also IUnknown) - */ -static ULONG WINAPI COMCAT_IClassFactory_AddRef(LPCLASSFACTORY iface) -{ - return 2; /* non-heap based object */ -} - -/********************************************************************** - * COMCAT_IClassFactory_Release (also IUnknown) - */ -static ULONG WINAPI COMCAT_IClassFactory_Release(LPCLASSFACTORY iface) -{ - return 1; /* non-heap based object */ -} - -/********************************************************************** - * COMCAT_IClassFactory_CreateInstance - */ -static HRESULT WINAPI COMCAT_IClassFactory_CreateInstance( - LPCLASSFACTORY iface, - LPUNKNOWN pUnkOuter, - REFIID riid, - LPVOID *ppvObj) +HRESULT WINAPI ComCat_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppvObj) { HRESULT res; TRACE("%s\n",debugstr_guid(riid)); @@ -765,36 +719,6 @@ static HRESULT WINAPI COMCAT_IClassFactory_CreateInstance( }
/********************************************************************** - * COMCAT_IClassFactory_LockServer - */ -static HRESULT WINAPI COMCAT_IClassFactory_LockServer( - LPCLASSFACTORY iface, - BOOL fLock) -{ - FIXME("(%d), stub!\n",fLock); - return S_OK; -} - -/********************************************************************** - * static ClassFactory instance - */ -static const IClassFactoryVtbl ComCatCFVtbl = -{ - COMCAT_IClassFactory_QueryInterface, - COMCAT_IClassFactory_AddRef, - COMCAT_IClassFactory_Release, - COMCAT_IClassFactory_CreateInstance, - COMCAT_IClassFactory_LockServer -}; - -static const IClassFactoryVtbl *ComCatCF = &ComCatCFVtbl; - -HRESULT ComCatCF_Create(REFIID riid, LPVOID *ppv) -{ - return IClassFactory_QueryInterface((IClassFactory *)&ComCatCF, riid, ppv); -} - -/********************************************************************** * IEnumCATEGORYINFO implementation * * This implementation is not thread-safe. The manager itself is, but diff --git a/dlls/ole32/moniker.h b/dlls/ole32/moniker.h index 7438fe0..eaeed54 100644 --- a/dlls/ole32/moniker.h +++ b/dlls/ole32/moniker.h @@ -36,7 +36,7 @@ HRESULT WINAPI AntiMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, HRESULT WINAPI CompositeMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv); HRESULT WINAPI ClassMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv); HRESULT WINAPI PointerMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv); -HRESULT ComCatCF_Create(REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN; +HRESULT WINAPI ComCat_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv);
/* This function decomposes a String path to a String Table containing all the elements ("" or "subDirectory" or "Directory" or "FileName") of the path */ int FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR** stringTable) DECLSPEC_HIDDEN; diff --git a/dlls/ole32/oleproxy.c b/dlls/ole32/oleproxy.c index faceced..bc8e1ea 100644 --- a/dlls/ole32/oleproxy.c +++ b/dlls/ole32/oleproxy.c @@ -139,6 +139,17 @@ static const IClassFactoryVtbl PointerMonikerCFVtbl =
static IClassFactory PointerMonikerCF = { &PointerMonikerCFVtbl };
+static const IClassFactoryVtbl ComCatCFVtbl = +{ + ClassFactory_QueryInterface, + ClassFactory_AddRef, + ClassFactory_Release, + ComCat_CreateInstance, + ClassFactory_LockServer +}; + +static IClassFactory ComCatCF = { &ComCatCFVtbl }; + /*********************************************************************** * DllGetClassObject [OLE32.@] */ @@ -168,7 +179,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv) if (IsEqualCLSID(rclsid, &CLSID_PointerMoniker)) return IClassFactory_QueryInterface(&PointerMonikerCF, iid, ppv); if (IsEqualGUID(rclsid, &CLSID_StdComponentCategoriesMgr)) - return ComCatCF_Create(iid, ppv); + return IClassFactory_QueryInterface(&ComCatCF, iid, ppv);
hr = OLE32_DllGetClassObject(rclsid, iid, ppv); if (SUCCEEDED(hr))