From 0d8f86c66de4fc75793f777967c7df2d9202776b Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Sat, 3 May 2014 15:45:06 +1000 Subject: [PATCH] dpnet: Implement IDirectPlay8Client Initialize. --- dlls/dpnet/client.c | 15 ++++++++++++--- dlls/dpnet/dpnet_private.h | 10 +++++++--- dlls/dpnet/tests/client.c | 2 +- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/dlls/dpnet/client.c b/dlls/dpnet/client.c index 9668a68dec0..43ffb59ead8 100644 --- a/dlls/dpnet/client.c +++ b/dlls/dpnet/client.c @@ -86,9 +86,18 @@ static ULONG WINAPI IDirectPlay8ClientImpl_Release(IDirectPlay8Client *iface) static HRESULT WINAPI IDirectPlay8ClientImpl_Initialize(IDirectPlay8Client *iface, void * const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) { - IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); - FIXME("(%p):(%p,%p,%x): Stub\n", This, pvUserContext, pfn, dwFlags); - return DPN_OK; + IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); + + TRACE("(%p):(%p,%p,%x)\n", This, pvUserContext, pfn, dwFlags); + + if(!pfn) + return DPNERR_INVALIDPARAM; + + This->usercontext = pvUserContext; + This->msghandler = pfn; + This->flags = dwFlags; + + return DPN_OK; } static HRESULT WINAPI IDirectPlay8ClientImpl_EnumServiceProviders(IDirectPlay8Client *iface, diff --git a/dlls/dpnet/dpnet_private.h b/dlls/dpnet/dpnet_private.h index 00ea94baebd..34d2aeea347 100644 --- a/dlls/dpnet/dpnet_private.h +++ b/dlls/dpnet/dpnet_private.h @@ -46,9 +46,13 @@ typedef struct IDirectPlay8ThreadPoolImpl IDirectPlay8ThreadPoolImpl; */ struct IDirectPlay8ClientImpl { - IDirectPlay8Client IDirectPlay8Client_iface; - LONG ref; - /* IDirectPlay8Client fields */ + IDirectPlay8Client IDirectPlay8Client_iface; + LONG ref; + + /* IDirectPlay8Client fields */ + PFNDPNMESSAGEHANDLER msghandler; + DWORD flags; + void *usercontext; }; /* ------------------- */ diff --git a/dlls/dpnet/tests/client.c b/dlls/dpnet/tests/client.c index 890f218927c..0df99dd039b 100644 --- a/dlls/dpnet/tests/client.c +++ b/dlls/dpnet/tests/client.c @@ -44,7 +44,7 @@ static BOOL test_init_dp(void) ok(hr == S_OK, "CoCreateInstance failed with 0x%x\n", hr); hr = IDirectPlay8Client_Initialize(client, NULL, NULL, 0); - todo_wine ok(hr == DPNERR_INVALIDPARAM, "got %x\n", hr); + ok(hr == DPNERR_INVALIDPARAM, "got %x\n", hr); hr = IDirectPlay8Client_Initialize(client, NULL, DirectPlayMessageHandler, 0); ok(hr == S_OK, "IDirectPlay8Client_Initialize failed with %x\n", hr);