Module: wine Branch: master Commit: 76c3f0cffb793511f0bb76bd10749102aebb9709 URL: http://source.winehq.org/git/wine.git/?a=commit;h=76c3f0cffb793511f0bb76bd10...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Nov 27 16:49:55 2013 +0400
qmgr: Implement Get/SetNotifyFlags().
---
dlls/qmgr/job.c | 24 ++++++++++++++++++++---- dlls/qmgr/qmgr.h | 1 + dlls/qmgr/tests/job.c | 13 +++++++++++++ include/bits.idl | 1 + 4 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/dlls/qmgr/job.c b/dlls/qmgr/job.c index ac7deaf..52c7b7f 100644 --- a/dlls/qmgr/job.c +++ b/dlls/qmgr/job.c @@ -410,8 +410,17 @@ static HRESULT WINAPI BackgroundCopyJob_SetNotifyFlags( ULONG Val) { BackgroundCopyJobImpl *This = impl_from_IBackgroundCopyJob2(iface); - FIXME("(%p)->(%d): stub\n", This, Val); - return E_NOTIMPL; + static const ULONG valid_flags = BG_NOTIFY_JOB_TRANSFERRED | + BG_NOTIFY_JOB_ERROR | + BG_NOTIFY_DISABLE | + BG_NOTIFY_JOB_MODIFICATION | + BG_NOTIFY_FILE_TRANSFERRED; + + TRACE("(%p)->(0x%x)\n", This, Val); + + if (Val & ~valid_flags) return E_NOTIMPL; + This->notify_flags = Val; + return S_OK; }
static HRESULT WINAPI BackgroundCopyJob_GetNotifyFlags( @@ -419,8 +428,14 @@ static HRESULT WINAPI BackgroundCopyJob_GetNotifyFlags( ULONG *pVal) { BackgroundCopyJobImpl *This = impl_from_IBackgroundCopyJob2(iface); - FIXME("(%p)->(%p): stub\n", This, pVal); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, pVal); + + if (!pVal) return E_INVALIDARG; + + *pVal = This->notify_flags; + + return S_OK; }
static HRESULT WINAPI BackgroundCopyJob_SetNotifyInterface( @@ -689,6 +704,7 @@ HRESULT BackgroundCopyJobConstructor(LPCWSTR displayName, BG_JOB_TYPE type, GUID
This->state = BG_JOB_STATE_SUSPENDED; This->description = NULL; + This->notify_flags = BG_NOTIFY_JOB_ERROR | BG_NOTIFY_JOB_TRANSFERRED;
*job = This;
diff --git a/dlls/qmgr/qmgr.h b/dlls/qmgr/qmgr.h index 63d9f91..eb982a0 100644 --- a/dlls/qmgr/qmgr.h +++ b/dlls/qmgr/qmgr.h @@ -43,6 +43,7 @@ typedef struct struct list files; BG_JOB_PROGRESS jobProgress; BG_JOB_STATE state; + ULONG notify_flags; /* Protects file list, and progress */ CRITICAL_SECTION cs; struct list entryFromQmgr; diff --git a/dlls/qmgr/tests/job.c b/dlls/qmgr/tests/job.c index 1979140..f311235 100644 --- a/dlls/qmgr/tests/job.c +++ b/dlls/qmgr/tests/job.c @@ -414,6 +414,18 @@ static void test_CompleteLocalURL(void) HeapFree(GetProcessHeap(), 0, urlB); }
+static void test_NotifyFlags(void) +{ + ULONG flags; + HRESULT hr; + + /* check default flags */ + flags = 0; + hr = IBackgroundCopyJob_GetNotifyFlags(test_job, &flags); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(flags == (BG_NOTIFY_JOB_ERROR | BG_NOTIFY_JOB_TRANSFERRED), "flags 0x%08x\n", flags); +} + typedef void (*test_t)(void);
START_TEST(job) @@ -425,6 +437,7 @@ START_TEST(job) test_GetProgress_preTransfer, test_GetState, test_ResumeEmpty, + test_NotifyFlags, 0 }; static const test_t tests_bits20[] = { diff --git a/include/bits.idl b/include/bits.idl index 2eed38d..0e3362c 100644 --- a/include/bits.idl +++ b/include/bits.idl @@ -29,6 +29,7 @@ cpp_quote("#define BG_NOTIFY_JOB_TRANSFERRED 0x0001") cpp_quote("#define BG_NOTIFY_JOB_ERROR 0x0002") cpp_quote("#define BG_NOTIFY_DISABLE 0x0004") cpp_quote("#define BG_NOTIFY_JOB_MODIFICATION 0x0008") +cpp_quote("#define BG_NOTIFY_FILE_TRANSFERRED 0x0010")
cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") cpp_quote("#undef EnumJobs")