Module: wine Branch: master Commit: 052de3f9a8bb42245975703c3b10ec67576fb0cf URL: http://source.winehq.org/git/wine.git/?a=commit;h=052de3f9a8bb42245975703c3b... Author: Michael Stefaniuc <mstefani(a)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; }