Module: wine Branch: master Commit: 3799ad3482754e56b625dcc923de4a94e54ab859 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3799ad3482754e56b625dcc923...
Author: Michael Stefaniuc mstefani@redhat.de Date: Sun Jan 23 21:01:44 2011 +0100
ddrawex: COM cleanup for the IClassFactory iface.
---
dlls/ddrawex/ddrawex_private.h | 10 ------- dlls/ddrawex/main.c | 52 +++++++++++++++++++++++---------------- 2 files changed, 31 insertions(+), 31 deletions(-)
diff --git a/dlls/ddrawex/ddrawex_private.h b/dlls/ddrawex/ddrawex_private.h index 3e7a0e2..079b26c 100644 --- a/dlls/ddrawex/ddrawex_private.h +++ b/dlls/ddrawex/ddrawex_private.h @@ -43,16 +43,6 @@ DECLARE_INTERFACE_(IDirectDrawFactory, IUnknown) #define IDirectDrawFactory_DirectDrawEnumerate(p,a,b) (p)->lpVtbl->_DirectDrawEnumerate(p,a,b) #endif
-/****************************************************************************** - * DirectDraw ClassFactory implementation - incomplete - ******************************************************************************/ -typedef struct -{ - const IClassFactoryVtbl *lpVtbl; - LONG ref; - HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, REFIID iid, LPVOID *ppObj); -} IClassFactoryImpl; -
/****************************************************************************** * DirectDrawFactory implementation diff --git a/dlls/ddrawex/main.c b/dlls/ddrawex/main.c index c93d8eb..b5923e2 100644 --- a/dlls/ddrawex/main.c +++ b/dlls/ddrawex/main.c @@ -39,16 +39,29 @@ WINE_DEFAULT_DEBUG_CHANNEL(ddrawex);
static HINSTANCE instance;
+/****************************************************************************** + * DirectDraw ClassFactory implementation + ******************************************************************************/ +typedef struct +{ + IClassFactory IClassFactory_iface; + LONG ref; + HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, REFIID iid, LPVOID *ppObj); +} IClassFactoryImpl; + +static inline IClassFactoryImpl *impl_from_IClassFactory(IClassFactory *iface) +{ + return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface); +} + /******************************************************************************* * IDirectDrawClassFactory::QueryInterface * *******************************************************************************/ -static HRESULT WINAPI -IDirectDrawClassFactoryImpl_QueryInterface(IClassFactory *iface, - REFIID riid, - void **obj) +static HRESULT WINAPI IDirectDrawClassFactoryImpl_QueryInterface(IClassFactory *iface, REFIID riid, + void **obj) { - IClassFactoryImpl *This = (IClassFactoryImpl*) iface; + IClassFactoryImpl *This = impl_from_IClassFactory(iface);
TRACE("(%p)->(%s,%p)\n", This, debugstr_guid(riid), obj);
@@ -68,10 +81,9 @@ IDirectDrawClassFactoryImpl_QueryInterface(IClassFactory *iface, * IDirectDrawClassFactory::AddRef * *******************************************************************************/ -static ULONG WINAPI -IDirectDrawClassFactoryImpl_AddRef(IClassFactory *iface) +static ULONG WINAPI IDirectDrawClassFactoryImpl_AddRef(IClassFactory *iface) { - IClassFactoryImpl *This = (IClassFactoryImpl*) iface; + IClassFactoryImpl *This = impl_from_IClassFactory(iface); ULONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p)->() incrementing from %d.\n", This, ref - 1); @@ -83,11 +95,11 @@ IDirectDrawClassFactoryImpl_AddRef(IClassFactory *iface) * IDirectDrawClassFactory::Release * *******************************************************************************/ -static ULONG WINAPI -IDirectDrawClassFactoryImpl_Release(IClassFactory *iface) +static ULONG WINAPI IDirectDrawClassFactoryImpl_Release(IClassFactory *iface) { - IClassFactoryImpl *This = (IClassFactoryImpl*) iface; + IClassFactoryImpl *This = impl_from_IClassFactory(iface); ULONG ref = InterlockedDecrement(&This->ref); + TRACE("(%p)->() decrementing from %d.\n", This, ref+1);
if (ref == 0) @@ -101,13 +113,10 @@ IDirectDrawClassFactoryImpl_Release(IClassFactory *iface) * IDirectDrawClassFactory::CreateInstance * *******************************************************************************/ -static HRESULT WINAPI -IDirectDrawClassFactoryImpl_CreateInstance(IClassFactory *iface, - IUnknown *UnkOuter, - REFIID riid, - void **obj) +static HRESULT WINAPI IDirectDrawClassFactoryImpl_CreateInstance(IClassFactory *iface, + IUnknown *UnkOuter, REFIID riid, void **obj) { - IClassFactoryImpl *This = (IClassFactoryImpl*) iface; + IClassFactoryImpl *This = impl_from_IClassFactory(iface);
TRACE("(%p)->(%p,%s,%p)\n",This,UnkOuter,debugstr_guid(riid),obj);
@@ -118,11 +127,12 @@ IDirectDrawClassFactoryImpl_CreateInstance(IClassFactory *iface, * IDirectDrawClassFactory::LockServer * *******************************************************************************/ -static HRESULT WINAPI -IDirectDrawClassFactoryImpl_LockServer(IClassFactory *iface,BOOL dolock) +static HRESULT WINAPI IDirectDrawClassFactoryImpl_LockServer(IClassFactory *iface,BOOL dolock) { - IClassFactoryImpl *This = (IClassFactoryImpl*) iface; + IClassFactoryImpl *This = impl_from_IClassFactory(iface); + FIXME("(%p)->(%d),stub!\n",This,dolock); + return S_OK; }
@@ -287,7 +297,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) factory = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*factory)); if (factory == NULL) return E_OUTOFMEMORY;
- factory->lpVtbl = &IClassFactory_Vtbl; + factory->IClassFactory_iface.lpVtbl = &IClassFactory_Vtbl; factory->ref = 1;
factory->pfnCreateInstance = CreateDirectDrawFactory;