Module: wine Branch: master Commit: d2d225f6a5228899a358f8ef05d77fbadd2d2385 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d2d225f6a5228899a358f8ef05...
Author: Vincent Povirk vincent@codeweavers.com Date: Tue May 22 15:24:03 2012 -0500
propsys: Implement IPropertyStore::GetCount.
---
dlls/propsys/propstore.c | 21 +++++++++++++++++++-- dlls/propsys/tests/propstore.c | 10 +++++----- 2 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/dlls/propsys/propstore.c b/dlls/propsys/propstore.c index 88a6a7e..b89eb76 100644 --- a/dlls/propsys/propstore.c +++ b/dlls/propsys/propstore.c @@ -133,8 +133,24 @@ static ULONG WINAPI PropertyStore_Release(IPropertyStoreCache *iface) static HRESULT WINAPI PropertyStore_GetCount(IPropertyStoreCache *iface, DWORD *cProps) { - FIXME("%p,%p: stub\n", iface, cProps); - return E_NOTIMPL; + PropertyStore *This = impl_from_IPropertyStoreCache(iface); + propstore_format *format; + + TRACE("%p,%p\n", iface, cProps); + + if (!cProps) + return E_POINTER; + + *cProps = 0; + + EnterCriticalSection(&This->lock); + + LIST_FOR_EACH_ENTRY(format, &This->formats, propstore_format, entry) + *cProps += format->count; + + LeaveCriticalSection(&This->lock); + + return S_OK; }
static HRESULT WINAPI PropertyStore_GetAt(IPropertyStoreCache *iface, @@ -201,6 +217,7 @@ static HRESULT PropertyStore_LookupValue(PropertyStore *This, REFPROPERTYKEY key
value->pid = key->pid; list_add_tail(&format->values, &value->entry); + format->count++; }
*result = value; diff --git a/dlls/propsys/tests/propstore.c b/dlls/propsys/tests/propstore.c index c24cb35..6ca67e9 100644 --- a/dlls/propsys/tests/propstore.c +++ b/dlls/propsys/tests/propstore.c @@ -55,11 +55,11 @@ static void test_inmemorystore(void) }
hr = IPropertyStoreCache_GetCount(propcache, NULL); - todo_wine ok(hr == E_POINTER, "GetCount failed, hr=%x\n", hr); + ok(hr == E_POINTER, "GetCount failed, hr=%x\n", hr);
hr = IPropertyStoreCache_GetCount(propcache, &count); - todo_wine ok(hr == S_OK, "GetCount failed, hr=%x\n", hr); - todo_wine ok(count == 0, "GetCount returned %i, expected 0\n", count); + ok(hr == S_OK, "GetCount failed, hr=%x\n", hr); + ok(count == 0, "GetCount returned %i, expected 0\n", count);
hr = IPropertyStoreCache_Commit(propcache); ok(hr == S_OK, "Commit failed, hr=%x\n", hr); @@ -91,8 +91,8 @@ static void test_inmemorystore(void) ok(hr == S_OK, "SetValue failed, hr=%x\n", hr);
hr = IPropertyStoreCache_GetCount(propcache, &count); - todo_wine ok(hr == S_OK, "GetCount failed, hr=%x\n", hr); - todo_wine ok(count == 1, "GetCount returned %i, expected 0\n", count); + ok(hr == S_OK, "GetCount failed, hr=%x\n", hr); + ok(count == 1, "GetCount returned %i, expected 0\n", count);
memset(&pkey, 0, sizeof(pkey));