Michael Stefaniuc : mstask: COM cleanup for the ITaskScheduler iface.
Alexandre Julliard
julliard at winehq.org
Mon Jan 24 11:07:34 CST 2011
Module: wine
Branch: master
Commit: 052de3f9a8bb42245975703c3b10ec67576fb0cf
URL: http://source.winehq.org/git/wine.git/?a=commit;h=052de3f9a8bb42245975703c3b10ec67576fb0cf
Author: Michael Stefaniuc <mstefani at redhat.de>
Date: Mon Jan 24 00:14:53 2011 +0100
mstask: COM cleanup for the ITaskScheduler iface.
---
dlls/mstask/mstask_private.h | 6 ------
dlls/mstask/task_scheduler.c | 23 +++++++++++++++++------
2 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/dlls/mstask/mstask_private.h b/dlls/mstask/mstask_private.h
index d159b8e..ac965e2 100644
--- a/dlls/mstask/mstask_private.h
+++ b/dlls/mstask/mstask_private.h
@@ -35,12 +35,6 @@ typedef struct ClassFactoryImpl ClassFactoryImpl;
extern ClassFactoryImpl MSTASK_ClassFactory;
extern HRESULT TaskTriggerConstructor(LPVOID *ppObj);
-
-typedef struct
-{
- const ITaskSchedulerVtbl *lpVtbl;
- LONG ref;
-} TaskSchedulerImpl;
extern HRESULT TaskSchedulerConstructor(LPVOID *ppObj);
typedef struct
diff --git a/dlls/mstask/task_scheduler.c b/dlls/mstask/task_scheduler.c
index 5efa086..1d2ac21 100644
--- a/dlls/mstask/task_scheduler.c
+++ b/dlls/mstask/task_scheduler.c
@@ -22,6 +22,17 @@
WINE_DEFAULT_DEBUG_CHANNEL(mstask);
+typedef struct
+{
+ ITaskScheduler ITaskScheduler_iface;
+ LONG ref;
+} TaskSchedulerImpl;
+
+static inline TaskSchedulerImpl *impl_from_ITaskScheduler(ITaskScheduler *iface)
+{
+ return CONTAINING_RECORD(iface, TaskSchedulerImpl, ITaskScheduler_iface);
+}
+
static void TaskSchedulerDestructor(TaskSchedulerImpl *This)
{
TRACE("%p\n", This);
@@ -34,14 +45,14 @@ static HRESULT WINAPI MSTASK_ITaskScheduler_QueryInterface(
REFIID riid,
void **ppvObject)
{
- TaskSchedulerImpl * This = (TaskSchedulerImpl *)iface;
+ TaskSchedulerImpl * This = impl_from_ITaskScheduler(iface);
TRACE("IID: %s\n", debugstr_guid(riid));
if (IsEqualGUID(riid, &IID_IUnknown) ||
IsEqualGUID(riid, &IID_ITaskScheduler))
{
- *ppvObject = &This->lpVtbl;
+ *ppvObject = &This->ITaskScheduler_iface;
ITaskScheduler_AddRef(iface);
return S_OK;
}
@@ -53,7 +64,7 @@ static HRESULT WINAPI MSTASK_ITaskScheduler_QueryInterface(
static ULONG WINAPI MSTASK_ITaskScheduler_AddRef(
ITaskScheduler* iface)
{
- TaskSchedulerImpl *This = (TaskSchedulerImpl *)iface;
+ TaskSchedulerImpl *This = impl_from_ITaskScheduler(iface);
TRACE("\n");
return InterlockedIncrement(&This->ref);
}
@@ -61,7 +72,7 @@ static ULONG WINAPI MSTASK_ITaskScheduler_AddRef(
static ULONG WINAPI MSTASK_ITaskScheduler_Release(
ITaskScheduler* iface)
{
- TaskSchedulerImpl * This = (TaskSchedulerImpl *)iface;
+ TaskSchedulerImpl * This = impl_from_ITaskScheduler(iface);
ULONG ref;
TRACE("\n");
ref = InterlockedDecrement(&This->ref);
@@ -178,10 +189,10 @@ HRESULT TaskSchedulerConstructor(LPVOID *ppObj)
if (!This)
return E_OUTOFMEMORY;
- This->lpVtbl = &MSTASK_ITaskSchedulerVtbl;
+ This->ITaskScheduler_iface.lpVtbl = &MSTASK_ITaskSchedulerVtbl;
This->ref = 1;
- *ppObj = &This->lpVtbl;
+ *ppObj = &This->ITaskScheduler_iface;
InterlockedIncrement(&dll_ref);
return S_OK;
}
More information about the wine-cvs
mailing list