dpnet: Implement IDirectPlay8Client Initialize (try 2)

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Mon Feb 17 02:11:44 CST 2014


Hi,
Fixed patching issue.

The tests are just a copy of peer.c and changed to use interface 
IDirectPlay8Client.

Changelog:
        dpnet: Implement IDirectPlay8Client Initialize


Best Regards
    Alistair Leslie-Hughes

-------------- next part --------------
>From 441bc30310810783d316e5ad8be6423a29287ade Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Mon, 17 Feb 2014 19:05:07 +1100
Subject: [PATCH] Implement IDirectPlay8Client Initialize
To: wine-patches <wine-patches at winehq.org>

---
 dlls/dpnet/client.c          | 18 +++++++++++++++---
 dlls/dpnet/dpnet_private.h   | 10 +++++++---
 dlls/dpnet/tests/Makefile.in |  1 +
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/dlls/dpnet/client.c b/dlls/dpnet/client.c
index 9668a68..38ae904 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,
@@ -291,6 +300,9 @@ HRESULT DPNET_CreateDirectPlay8Client(IClassFactory *iface, IUnknown *pUnkOuter,
 
     client->IDirectPlay8Client_iface.lpVtbl = &DirectPlay8Client_Vtbl;
     client->ref = 1;
+    client->usercontext = NULL;
+    client->msghandler = NULL;
+    client->flags = 0;
 
     hr = IDirectPlay8ClientImpl_QueryInterface(&client->IDirectPlay8Client_iface, riid, ppv);
     IDirectPlay8ClientImpl_Release(&client->IDirectPlay8Client_iface);
diff --git a/dlls/dpnet/dpnet_private.h b/dlls/dpnet/dpnet_private.h
index 4a42eae..54a22f9 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/Makefile.in b/dlls/dpnet/tests/Makefile.in
index 9220121..5697f47 100644
--- a/dlls/dpnet/tests/Makefile.in
+++ b/dlls/dpnet/tests/Makefile.in
@@ -2,5 +2,6 @@ TESTDLL   = dpnet.dll
 IMPORTS   = dpnet ole32
 
 C_SRCS = \
+	client.c \
 	peer.c \
 	server.c
-- 
1.8.3.2



More information about the wine-patches mailing list