Module: wine Branch: master Commit: 73ca9d2d0b543452d99ba4e12a2cc4b3749deae8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=73ca9d2d0b543452d99ba4e12a...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Wed Oct 2 12:13:54 2013 +1000
mscoree: Partially implement ICLRMetaHost RequestRuntimeLoadedNotification.
---
dlls/mscoree/metahost.c | 13 +++++++++++-- dlls/mscoree/tests/metahost.c | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/dlls/mscoree/metahost.c b/dlls/mscoree/metahost.c index f6558d9..f84e455 100644 --- a/dlls/mscoree/metahost.c +++ b/dlls/mscoree/metahost.c @@ -986,6 +986,8 @@ static const struct IEnumUnknownVtbl InstalledRuntimeEnum_Vtbl = { struct CLRMetaHost { ICLRMetaHost ICLRMetaHost_iface; + + RuntimeLoadedCallbackFnPtr callback; };
static struct CLRMetaHost GlobalCLRMetaHost; @@ -1168,9 +1170,16 @@ static HRESULT WINAPI CLRMetaHost_EnumerateLoadedRuntimes(ICLRMetaHost* iface, static HRESULT WINAPI CLRMetaHost_RequestRuntimeLoadedNotification(ICLRMetaHost* iface, RuntimeLoadedCallbackFnPtr pCallbackFunction) { - FIXME("%p\n", pCallbackFunction); + TRACE("%p\n", pCallbackFunction);
- return E_NOTIMPL; + if(!pCallbackFunction) + return E_POINTER; + + WARN("Callback currently will not be called.\n"); + + GlobalCLRMetaHost.callback = pCallbackFunction; + + return S_OK; }
static HRESULT WINAPI CLRMetaHost_QueryLegacyV2RuntimeBinding(ICLRMetaHost* iface, diff --git a/dlls/mscoree/tests/metahost.c b/dlls/mscoree/tests/metahost.c index a9872f0..7794e74 100644 --- a/dlls/mscoree/tests/metahost.c +++ b/dlls/mscoree/tests/metahost.c @@ -142,6 +142,23 @@ static void test_getruntime(void) ok(hr == CLR_E_SHIM_RUNTIME, "GetVersion failed, hr=%x\n", hr); }
+static void WINAPI notification_callback(ICLRRuntimeInfo *pRuntimeInfo, CallbackThreadSetFnPtr pfnCallbackThreadSet, + CallbackThreadUnsetFnPtr pfnCallbackThreadUnset) +{ + ok(0, "Unexpected call\n"); +} + +static void test_notification(void) +{ + HRESULT hr; + + hr = ICLRMetaHost_RequestRuntimeLoadedNotification(metahost, NULL); + ok(hr == E_POINTER, "GetVersion failed, hr=%x\n", hr); + + hr = ICLRMetaHost_RequestRuntimeLoadedNotification(metahost,notification_callback); + ok(hr == S_OK, "GetVersion failed, hr=%x\n", hr); +} + START_TEST(metahost) { if (!init_pointers()) @@ -150,6 +167,7 @@ START_TEST(metahost) test_enumruntimes();
test_getruntime(); + test_notification();
cleanup(); }