Module: wine Branch: master Commit: 7d95758e6790b5cfe85e3ab90c7c95bce33111b8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7d95758e6790b5cfe85e3ab90c...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Wed Feb 19 12:12:55 2014 +0900
taskschd: Make IRegistrationInfo a part of ITaskDefinition implementation.
---
dlls/taskschd/task.c | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-)
diff --git a/dlls/taskschd/task.c b/dlls/taskschd/task.c index d51e4ae..0c96748 100644 --- a/dlls/taskschd/task.c +++ b/dlls/taskschd/task.c @@ -248,7 +248,7 @@ static const IRegistrationInfoVtbl RegistrationInfo_vtbl = RegistrationInfo_put_Source };
-HRESULT RegistrationInfo_create(IRegistrationInfo **obj) +static HRESULT RegistrationInfo_create(IRegistrationInfo **obj) { registration_info *reginfo;
@@ -832,6 +832,7 @@ static HRESULT TaskSettings_create(ITaskSettings **obj) typedef struct { ITaskDefinition ITaskDefinition_iface; + IRegistrationInfo *reginfo; ITaskSettings *taskset; LONG ref; } TaskDefinition; @@ -855,6 +856,8 @@ static ULONG WINAPI TaskDefinition_Release(ITaskDefinition *iface) if (!ref) { TRACE("destroying %p\n", iface); + if (taskdef->reginfo) + IRegistrationInfo_Release(taskdef->reginfo); if (taskdef->taskset) ITaskSettings_Release(taskdef->taskset); heap_free(taskdef); @@ -912,14 +915,40 @@ static HRESULT WINAPI TaskDefinition_Invoke(ITaskDefinition *iface, DISPID dispi
static HRESULT WINAPI TaskDefinition_get_RegistrationInfo(ITaskDefinition *iface, IRegistrationInfo **info) { - FIXME("%p,%p: stub\n", iface, info); - return E_NOTIMPL; + TaskDefinition *taskdef = impl_from_ITaskDefinition(iface); + HRESULT hr; + + TRACE("%p,%p\n", iface, info); + + if (!info) return E_POINTER; + + if (!taskdef->reginfo) + { + hr = RegistrationInfo_create(&taskdef->reginfo); + if (hr != S_OK) return hr; + } + + IRegistrationInfo_AddRef(taskdef->reginfo); + *info = taskdef->reginfo; + + return S_OK; }
static HRESULT WINAPI TaskDefinition_put_RegistrationInfo(ITaskDefinition *iface, IRegistrationInfo *info) { - FIXME("%p,%p: stub\n", iface, info); - return E_NOTIMPL; + TaskDefinition *taskdef = impl_from_ITaskDefinition(iface); + + TRACE("%p,%p\n", iface, info); + + if (!info) return E_POINTER; + + if (taskdef->reginfo) + IRegistrationInfo_Release(taskdef->reginfo); + + IRegistrationInfo_AddRef(info); + taskdef->reginfo = info; + + return S_OK; }
static HRESULT WINAPI TaskDefinition_get_Triggers(ITaskDefinition *iface, ITriggerCollection **triggers)