qmgr: Implement job lists for IBackgroundCopyManager.
This commit is contained in:
parent
e6cbde105f
commit
c8a0e98b71
|
@ -26,7 +26,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(qmgr);
|
||||||
/* Destructor for instances of background copy manager */
|
/* Destructor for instances of background copy manager */
|
||||||
static void BackgroundCopyManagerDestructor(BackgroundCopyManagerImpl *This)
|
static void BackgroundCopyManagerDestructor(BackgroundCopyManagerImpl *This)
|
||||||
{
|
{
|
||||||
|
BackgroundCopyJobImpl *job;
|
||||||
TRACE("%p\n", This);
|
TRACE("%p\n", This);
|
||||||
|
|
||||||
|
LIST_FOR_EACH_ENTRY(job, &This->jobs, BackgroundCopyJobImpl, entryFromQmgr)
|
||||||
|
job->lpVtbl->Release((IBackgroundCopyJob *) job);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, This);
|
HeapFree(GetProcessHeap(), 0, This);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,9 +96,21 @@ static HRESULT WINAPI BITS_IBackgroundCopyManager_CreateJob(
|
||||||
GUID *pJobId,
|
GUID *pJobId,
|
||||||
IBackgroundCopyJob **ppJob)
|
IBackgroundCopyJob **ppJob)
|
||||||
{
|
{
|
||||||
|
BackgroundCopyManagerImpl * This = (BackgroundCopyManagerImpl *) iface;
|
||||||
|
BackgroundCopyJobImpl *job;
|
||||||
|
HRESULT hres;
|
||||||
TRACE("\n");
|
TRACE("\n");
|
||||||
return BackgroundCopyJobConstructor(DisplayName, Type, pJobId,
|
|
||||||
|
hres = BackgroundCopyJobConstructor(DisplayName, Type, pJobId,
|
||||||
(LPVOID *) ppJob);
|
(LPVOID *) ppJob);
|
||||||
|
if (FAILED(hres))
|
||||||
|
return hres;
|
||||||
|
|
||||||
|
/* Add a reference to the job to job list */
|
||||||
|
IBackgroundCopyJob_AddRef(*ppJob);
|
||||||
|
job = (BackgroundCopyJobImpl *) *ppJob;
|
||||||
|
list_add_head(&This->jobs, &job->entryFromQmgr);
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI BITS_IBackgroundCopyManager_GetJob(
|
static HRESULT WINAPI BITS_IBackgroundCopyManager_GetJob(
|
||||||
|
@ -151,6 +168,7 @@ HRESULT BackgroundCopyManagerConstructor(IUnknown *pUnkOuter, LPVOID *ppObj)
|
||||||
|
|
||||||
This->lpVtbl = &BITS_IBackgroundCopyManager_Vtbl;
|
This->lpVtbl = &BITS_IBackgroundCopyManager_Vtbl;
|
||||||
This->ref = 1;
|
This->ref = 1;
|
||||||
|
list_init(&This->jobs);
|
||||||
|
|
||||||
*ppObj = &This->lpVtbl;
|
*ppObj = &This->lpVtbl;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
|
@ -40,6 +40,7 @@ typedef struct
|
||||||
GUID jobId;
|
GUID jobId;
|
||||||
struct list files;
|
struct list files;
|
||||||
BG_JOB_PROGRESS jobProgress;
|
BG_JOB_PROGRESS jobProgress;
|
||||||
|
struct list entryFromQmgr;
|
||||||
} BackgroundCopyJobImpl;
|
} BackgroundCopyJobImpl;
|
||||||
|
|
||||||
/* Enum background copy jobs vtbl and related data */
|
/* Enum background copy jobs vtbl and related data */
|
||||||
|
@ -74,6 +75,7 @@ typedef struct
|
||||||
{
|
{
|
||||||
const IBackgroundCopyManagerVtbl *lpVtbl;
|
const IBackgroundCopyManagerVtbl *lpVtbl;
|
||||||
LONG ref;
|
LONG ref;
|
||||||
|
struct list jobs;
|
||||||
} BackgroundCopyManagerImpl;
|
} BackgroundCopyManagerImpl;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
Loading…
Reference in New Issue