Commit c8a0e98b authored by Roy Shea's avatar Roy Shea Committed by Alexandre Julliard

qmgr: Implement job lists for IBackgroundCopyManager.

parent e6cbde10
...@@ -26,7 +26,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(qmgr); ...@@ -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( ...@@ -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) ...@@ -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 ...@@ -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 ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment