Michael Stefaniuc : mstask: COM cleanup for the IClassFactory iface.

Alexandre Julliard julliard at winehq.org
Mon Jan 24 11:07:34 CST 2011


Module: wine
Branch: master
Commit: 30e90c9acee2681070e4d6665e9df4f4e46932da
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=30e90c9acee2681070e4d6665e9df4f4e46932da

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Mon Jan 24 00:09:40 2011 +0100

mstask: COM cleanup for the IClassFactory iface.

---

 dlls/mstask/factory.c        |   17 ++++++++++++++---
 dlls/mstask/mstask_private.h |    6 +-----
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/dlls/mstask/factory.c b/dlls/mstask/factory.c
index 8906d92..9dc1e29 100644
--- a/dlls/mstask/factory.c
+++ b/dlls/mstask/factory.c
@@ -21,12 +21,23 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(mstask);
 
+struct ClassFactoryImpl
+{
+    IClassFactory IClassFactory_iface;
+    LONG ref;
+};
+
+static inline ClassFactoryImpl *impl_from_IClassFactory(IClassFactory *iface)
+{
+    return CONTAINING_RECORD(iface, ClassFactoryImpl, IClassFactory_iface);
+}
+
 static HRESULT WINAPI MSTASK_IClassFactory_QueryInterface(
         LPCLASSFACTORY iface,
         REFIID riid,
         LPVOID *ppvObj)
 {
-    ClassFactoryImpl *This = (ClassFactoryImpl *)iface;
+    ClassFactoryImpl *This = impl_from_IClassFactory(iface);
 
     TRACE("IID: %s\n",debugstr_guid(riid));
     if (ppvObj == NULL)
@@ -35,7 +46,7 @@ static HRESULT WINAPI MSTASK_IClassFactory_QueryInterface(
     if (IsEqualGUID(riid, &IID_IUnknown) ||
             IsEqualGUID(riid, &IID_IClassFactory))
     {
-        *ppvObj = &This->lpVtbl;
+        *ppvObj = &This->IClassFactory_iface;
         IClassFactory_AddRef(iface);
         return S_OK;
     }
@@ -105,4 +116,4 @@ static const IClassFactoryVtbl IClassFactory_Vtbl =
     MSTASK_IClassFactory_LockServer
 };
 
-ClassFactoryImpl MSTASK_ClassFactory = { &IClassFactory_Vtbl };
+ClassFactoryImpl MSTASK_ClassFactory = { { &IClassFactory_Vtbl } };
diff --git a/dlls/mstask/mstask_private.h b/dlls/mstask/mstask_private.h
index eb3ecf8..a5f7d90 100644
--- a/dlls/mstask/mstask_private.h
+++ b/dlls/mstask/mstask_private.h
@@ -31,11 +31,7 @@
 
 extern LONG dll_ref;
 
-typedef struct
-{
-    const IClassFactoryVtbl *lpVtbl;
-    LONG ref;
-} ClassFactoryImpl;
+typedef struct ClassFactoryImpl ClassFactoryImpl;
 extern ClassFactoryImpl MSTASK_ClassFactory;
 
 typedef struct




More information about the wine-cvs mailing list