Alistair Leslie-Hughes : dpnet: Implement IDirectPlay8Peer SetSPCaps.
Alexandre Julliard
julliard at winehq.org
Mon Aug 27 16:18:14 CDT 2018
Module: wine
Branch: master
Commit: 069897ad9f5ffd17c3241b2c0cc921cf2217b639
URL: https://source.winehq.org/git/wine.git/?a=commit;h=069897ad9f5ffd17c3241b2c0cc921cf2217b639
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Mon Aug 27 01:26:09 2018 +0000
dpnet: Implement IDirectPlay8Peer SetSPCaps.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dpnet/peer.c | 12 ++++++++++--
dlls/dpnet/tests/client.c | 25 +++++++++++++++++++++++++
2 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/dlls/dpnet/peer.c b/dlls/dpnet/peer.c
index e8a60c3..3e3cd9b 100644
--- a/dlls/dpnet/peer.c
+++ b/dlls/dpnet/peer.c
@@ -526,9 +526,17 @@ static HRESULT WINAPI IDirectPlay8PeerImpl_SetCaps(IDirectPlay8Peer *iface, cons
static HRESULT WINAPI IDirectPlay8PeerImpl_SetSPCaps(IDirectPlay8Peer *iface, const GUID * const pguidSP,
const DPN_SP_CAPS * const pdpspCaps, const DWORD dwFlags )
{
- FIXME("(%p)->(%p,%p,%x): stub\n", iface, pguidSP, pdpspCaps, dwFlags);
+ IDirectPlay8PeerImpl* This = impl_from_IDirectPlay8Peer(iface);
- return DPNERR_GENERIC;
+ TRACE("(%p)->(%p,%p,%x): stub\n", iface, pguidSP, pdpspCaps, dwFlags);
+
+ if(!This->msghandler || pdpspCaps->dwSize != sizeof(DPN_SP_CAPS))
+ return DPNERR_INVALIDPARAM;
+
+ /* Only dwSystemBufferSize is set by this call. */
+ This->spcaps.dwSystemBufferSize = pdpspCaps->dwSystemBufferSize;
+
+ return DPN_OK;
}
static HRESULT WINAPI IDirectPlay8PeerImpl_GetSPCaps(IDirectPlay8Peer *iface, const GUID * const pguidSP,
diff --git a/dlls/dpnet/tests/client.c b/dlls/dpnet/tests/client.c
index 431203b..47d8b01 100644
--- a/dlls/dpnet/tests/client.c
+++ b/dlls/dpnet/tests/client.c
@@ -561,6 +561,9 @@ static void test_init_dp_peer(void)
memset(&caps, 0, sizeof(DPN_SP_CAPS));
caps.dwSize = sizeof(DPN_SP_CAPS);
+ hr = IDirectPlay8Peer_SetSPCaps(peer, &CLSID_DP8SP_TCPIP, &caps, 0);
+ ok(hr == DPNERR_INVALIDPARAM, "SetSPCaps failed with %x\n", hr);
+
hr = IDirectPlay8Peer_GetSPCaps(peer, &CLSID_DP8SP_TCPIP, &caps, 0);
ok(hr == DPNERR_UNINITIALIZED, "GetSPCaps failed with %x\n", hr);
@@ -815,6 +818,28 @@ static void test_get_sp_caps_peer(void)
ok(caps.dwBuffersPerThread == 1, "expected 1, got %d\n", caps.dwBuffersPerThread);
ok(caps.dwSystemBufferSize == 0x10000 || broken(caps.dwSystemBufferSize == 0x2000 /* before Win8 */),
"expected 0x10000, got 0x%x\n", caps.dwSystemBufferSize);
+
+ caps.dwNumThreads = 2;
+ caps.dwDefaultEnumCount = 3;
+ caps.dwDefaultEnumRetryInterval = 1400;
+ caps.dwDefaultEnumTimeout = 1400;
+ caps.dwMaxEnumPayloadSize = 900;
+ caps.dwBuffersPerThread = 2;
+ caps.dwSystemBufferSize = 0x0ffff;
+ hr = IDirectPlay8Peer_SetSPCaps(peer, &CLSID_DP8SP_TCPIP, &caps, 0);
+ ok(hr == DPN_OK, "SetSPCaps failed with %x\n", hr);
+
+ hr = IDirectPlay8Peer_GetSPCaps(peer, &CLSID_DP8SP_TCPIP, &caps, 0);
+ ok(hr == DPN_OK, "GetSPCaps failed with %x\n", hr);
+
+ ok(caps.dwSize == sizeof(DPN_SP_CAPS), "got %d\n", caps.dwSize);
+ ok(caps.dwNumThreads >= 3, "got %d\n", caps.dwNumThreads);
+ ok(caps.dwDefaultEnumCount == 5, "expected 5, got %d\n", caps.dwDefaultEnumCount);
+ ok(caps.dwDefaultEnumRetryInterval == 1500, "expected 1500, got %d\n", caps.dwDefaultEnumRetryInterval);
+ ok(caps.dwDefaultEnumTimeout == 1500, "expected 1500, got %d\n", caps.dwDefaultEnumTimeout);
+ ok(caps.dwMaxEnumPayloadSize == 983, "expected 983, got %d\n", caps.dwMaxEnumPayloadSize);
+ ok(caps.dwBuffersPerThread == 1, "expected 1, got %d\n", caps.dwBuffersPerThread);
+ ok(caps.dwSystemBufferSize == 0x0ffff, "expected 0x0ffff, got 0x%x\n", caps.dwSystemBufferSize);
}
static void test_player_info_peer(void)
More information about the wine-cvs
mailing list