Module: wine Branch: master Commit: 5cbd28aa5128a1b35e21a94825b0659542b186f6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5cbd28aa5128a1b35e21a94825...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Tue Dec 3 23:30:32 2013 +0400
qmgr: Implement AddFile() with AddFileSet().
---
dlls/qmgr/job.c | 46 ++++++++++++++++++++++++---------------------- 1 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/dlls/qmgr/job.c b/dlls/qmgr/job.c index fdbf234..419ec09 100644 --- a/dlls/qmgr/job.c +++ b/dlls/qmgr/job.c @@ -95,18 +95,33 @@ static HRESULT WINAPI BackgroundCopyJob_AddFileSet( BG_FILE_INFO *pFileSet) { BackgroundCopyJobImpl *This = impl_from_IBackgroundCopyJob2(iface); + HRESULT hr = S_OK; ULONG i;
TRACE("(%p)->(%d %p)\n", This, cFileCount, pFileSet);
+ EnterCriticalSection(&This->cs); + for (i = 0; i < cFileCount; ++i) { - HRESULT hr = IBackgroundCopyJob2_AddFile(iface, pFileSet[i].RemoteName, - pFileSet[i].LocalName); - if (FAILED(hr)) - return hr; + BackgroundCopyFileImpl *file; + + /* We should return E_INVALIDARG in these cases. */ + FIXME("Check for valid filenames and supported protocols\n"); + + hr = BackgroundCopyFileConstructor(This, pFileSet[i].RemoteName, pFileSet[i].LocalName, &file); + if (hr != S_OK) break; + + /* Add a reference to the file to file list */ + IBackgroundCopyFile_AddRef(&file->IBackgroundCopyFile_iface); + list_add_head(&This->files, &file->entryFromJob); + This->jobProgress.BytesTotal = BG_SIZE_UNKNOWN; + ++This->jobProgress.FilesTotal; } - return S_OK; + + LeaveCriticalSection(&This->cs); + + return hr; }
static HRESULT WINAPI BackgroundCopyJob_AddFile( @@ -115,26 +130,13 @@ static HRESULT WINAPI BackgroundCopyJob_AddFile( LPCWSTR LocalName) { BackgroundCopyJobImpl *This = impl_from_IBackgroundCopyJob2(iface); - BackgroundCopyFileImpl *file; - HRESULT res; + BG_FILE_INFO file;
TRACE("(%p)->(%s %s)\n", This, debugstr_w(RemoteUrl), debugstr_w(LocalName)); - /* We should return E_INVALIDARG in these cases. */ - FIXME("Check for valid filenames and supported protocols\n"); - - res = BackgroundCopyFileConstructor(This, RemoteUrl, LocalName, &file); - if (res != S_OK) - return res;
- /* Add a reference to the file to file list */ - IBackgroundCopyFile_AddRef(&file->IBackgroundCopyFile_iface); - EnterCriticalSection(&This->cs); - list_add_head(&This->files, &file->entryFromJob); - This->jobProgress.BytesTotal = BG_SIZE_UNKNOWN; - ++This->jobProgress.FilesTotal; - LeaveCriticalSection(&This->cs); - - return S_OK; + file.RemoteName = (LPWSTR)RemoteUrl; + file.LocalName = (LPWSTR)LocalName; + return IBackgroundCopyJob2_AddFileSet(iface, 1, &file); }
static HRESULT WINAPI BackgroundCopyJob_EnumFiles(