[PATCH 2/3] avifil32: Clean up the IClassFactory creation.
Michael Stefaniuc
mstefani at redhat.de
Tue Jul 12 03:07:16 CDT 2016
Also move it to avoid forward declarations of the IClassFactory methods.
Signed-off-by: Michael Stefaniuc <mstefani at redhat.de>
---
dlls/avifil32/factory.c | 68 +++++++++++++++++++++----------------------------
1 file changed, 29 insertions(+), 39 deletions(-)
diff --git a/dlls/avifil32/factory.c b/dlls/avifil32/factory.c
index aa0c44e..8ada02b 100644
--- a/dlls/avifil32/factory.c
+++ b/dlls/avifil32/factory.c
@@ -41,20 +41,6 @@ HMODULE AVIFILE_hModule = NULL;
static BOOL AVIFILE_bLocked;
static UINT AVIFILE_uUseCount;
-static HRESULT WINAPI IClassFactory_fnQueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj);
-static ULONG WINAPI IClassFactory_fnAddRef(LPCLASSFACTORY iface);
-static ULONG WINAPI IClassFactory_fnRelease(LPCLASSFACTORY iface);
-static HRESULT WINAPI IClassFactory_fnCreateInstance(LPCLASSFACTORY iface,LPUNKNOWN pOuter,REFIID riid,LPVOID *ppobj);
-static HRESULT WINAPI IClassFactory_fnLockServer(LPCLASSFACTORY iface,BOOL dolock);
-
-static const IClassFactoryVtbl iclassfact = {
- IClassFactory_fnQueryInterface,
- IClassFactory_fnAddRef,
- IClassFactory_fnRelease,
- IClassFactory_fnCreateInstance,
- IClassFactory_fnLockServer
-};
-
typedef struct
{
IClassFactory IClassFactory_iface;
@@ -67,31 +53,6 @@ static inline IClassFactoryImpl *impl_from_IClassFactory(IClassFactory *iface)
return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface);
}
-static HRESULT AVIFILE_CreateClassFactory(const CLSID *pclsid, const IID *riid,
- LPVOID *ppv)
-{
- IClassFactoryImpl *pClassFactory = NULL;
- HRESULT hr;
-
- *ppv = NULL;
-
- pClassFactory = HeapAlloc(GetProcessHeap(), 0, sizeof(*pClassFactory));
- if (pClassFactory == NULL)
- return E_OUTOFMEMORY;
-
- pClassFactory->IClassFactory_iface.lpVtbl = &iclassfact;
- pClassFactory->ref = 0;
- pClassFactory->clsid = *pclsid;
-
- hr = IClassFactory_QueryInterface(&pClassFactory->IClassFactory_iface, riid, ppv);
- if (FAILED(hr)) {
- HeapFree(GetProcessHeap(), 0, pClassFactory);
- *ppv = NULL;
- }
-
- return hr;
-}
-
static HRESULT WINAPI IClassFactory_fnQueryInterface(LPCLASSFACTORY iface,
REFIID riid,LPVOID *ppobj)
{
@@ -170,6 +131,35 @@ static HRESULT WINAPI IClassFactory_fnLockServer(LPCLASSFACTORY iface,BOOL doloc
return S_OK;
}
+static const IClassFactoryVtbl iclassfact = {
+ IClassFactory_fnQueryInterface,
+ IClassFactory_fnAddRef,
+ IClassFactory_fnRelease,
+ IClassFactory_fnCreateInstance,
+ IClassFactory_fnLockServer
+};
+
+static HRESULT AVIFILE_CreateClassFactory(const CLSID *clsid, const IID *riid, void **ppv)
+{
+ IClassFactoryImpl *cf;
+ HRESULT hr;
+
+ *ppv = NULL;
+
+ cf = HeapAlloc(GetProcessHeap(), 0, sizeof(*cf));
+ if (!cf)
+ return E_OUTOFMEMORY;
+
+ cf->IClassFactory_iface.lpVtbl = &iclassfact;
+ cf->ref = 1;
+ cf->clsid = *clsid;
+
+ hr = IClassFactory_QueryInterface(&cf->IClassFactory_iface, riid, ppv);
+ IClassFactory_Release(&cf->IClassFactory_iface);
+
+ return hr;
+}
+
LPCWSTR AVIFILE_BasenameW(LPCWSTR szPath)
{
#define SLASH(w) ((w) == '/' || (w) == '\\')
--
2.5.5
More information about the wine-patches
mailing list