Module: wine Branch: master Commit: eef69511f5d1347af95ffb8556ec6e4712dd3afe URL: http://source.winehq.org/git/wine.git/?a=commit;h=eef69511f5d1347af95ffb8556...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Wed Nov 2 09:13:37 2016 +0000
dpnet: Close resets back to an uninitialized state.
Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/dpnet/client.c | 9 ++++++--- dlls/dpnet/tests/client.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/dlls/dpnet/client.c b/dlls/dpnet/client.c index 36df50d..de338d8 100644 --- a/dlls/dpnet/client.c +++ b/dlls/dpnet/client.c @@ -253,9 +253,12 @@ static HRESULT WINAPI IDirectPlay8ClientImpl_GetServerAddress(IDirectPlay8Client
static HRESULT WINAPI IDirectPlay8ClientImpl_Close(IDirectPlay8Client *iface, const DWORD dwFlags) { - IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); - FIXME("(%p):(%x): Stub\n", This, dwFlags); - return DPN_OK; + IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); + FIXME("(%p):(%x): Stub\n", This, dwFlags); + + This->msghandler = NULL; + + return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_ReturnBuffer(IDirectPlay8Client *iface, diff --git a/dlls/dpnet/tests/client.c b/dlls/dpnet/tests/client.c index cfa7e10..4753d74 100644 --- a/dlls/dpnet/tests/client.c +++ b/dlls/dpnet/tests/client.c @@ -319,6 +319,33 @@ static void test_cleanup_dp(void) CoUninitialize(); }
+static void test_close(void) +{ + HRESULT hr; + static IDirectPlay8Client* client2; + DPN_SP_CAPS caps; + + hr = CoCreateInstance(&CLSID_DirectPlay8Client, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectPlay8Client, (void **)&client2); + ok(hr == S_OK, "got 0x%x\n", hr); + + memset(&caps, 0, sizeof(DPN_SP_CAPS)); + caps.dwSize = sizeof(DPN_SP_CAPS); + + hr = IDirectPlay8Client_Initialize(client2, NULL, DirectPlayMessageHandler, 0); + ok(hr == S_OK, "got %x\n", hr); + + hr = IDirectPlay8Client_GetSPCaps(client2, &CLSID_DP8SP_TCPIP, &caps, 0); + ok(hr == DPN_OK, "got %x\n", hr); + + hr = IDirectPlay8Client_Close(client2, 0); + ok(hr == DPN_OK, "got %x\n", hr); + + hr = IDirectPlay8Client_GetSPCaps(client2, &CLSID_DP8SP_TCPIP, &caps, 0); + ok(hr == DPNERR_UNINITIALIZED, "got %x\n", hr); + + IDirectPlay8Client_Release(client2); +} + START_TEST(client) { if(!test_init_dp()) @@ -329,5 +356,6 @@ START_TEST(client) test_get_sp_caps(); test_player_info(); test_lobbyclient(); + test_close(); test_cleanup_dp(); }