Daniel Collins
56772c9813
Build dsound hook DLL.
2018-10-23 22:04:34 +01:00
Daniel Collins
8ffad7fbdd
Fix logging.
2018-10-23 22:04:06 +01:00
Daniel Collins
4b962954ef
Release lock when dispatching DPNMSG_CREATE_PLAYER in IDirectPlay8::Host()
2018-10-23 22:03:18 +01:00
Daniel Collins
a5ff5b9a09
Build dpnet.dll
2018-10-21 21:17:06 +01:00
Daniel Collins
780a37965b
Implement IDirectPlay8Peer::GetLocalHostAddresses() method
2018-10-21 21:17:01 +01:00
Daniel Collins
b04735e8ea
Don't crash if IDirectPlay8Peer::Host() is passed a NULL session name.
2018-10-21 20:50:35 +01:00
Daniel Collins
d9c78f14bf
Delete obsolete Makefile
2018-10-17 00:07:10 +01:00
Daniel Collins
5ccf66fceb
Implement cancelling of queued asynchronous sends.
2018-10-16 23:25:08 +01:00
Daniel Collins
5c8f19d5a8
Log failures in hookdll
2018-10-16 13:48:51 +01:00
Daniel Collins
dd6488969e
Track and wait for synchronous EnumHosts() calls in Close()
2018-10-16 13:23:48 +01:00
Daniel Collins
0239e5357d
Add missing lock uses in DirectPlay8Peer
2018-10-16 13:13:45 +01:00
Daniel Collins
9fc69d67ea
Remove code duplication in disconnect/cleanup paths.
2018-10-15 18:13:10 +01:00
Daniel Collins
b74b018ff2
Implement IDirectPlay8Peer::TerminateSession()
2018-10-15 13:29:07 +01:00
Daniel Collins
b44689b38f
Implement IDirectPlay8Peer::DestroyPeer()
2018-10-14 17:41:57 +01:00
Daniel Collins
7723fc04e3
Implement player enumeration in IDirectPlay8Peer::EnumPlayersAndGroups()
2018-10-14 13:42:07 +01:00
Daniel Collins
c88355efb9
DirectPlay8Peer: Support cancelling in-progress connections.
2018-10-14 11:18:56 +01:00
Daniel Collins
f753f42d44
Allocate async handles correctly.
2018-10-14 01:06:00 +01:00
Daniel Collins
56ab6ea75a
Destroy local player is connecting to a peer fails.
2018-10-12 16:41:49 +01:00
Daniel Collins
1b16624577
Handle IDirectPlay8Peer::Close() being called by the host.
2018-10-12 10:14:20 +01:00
Daniel Collins
e7f5d0f68d
Proper implementation of IDirectPlay8Peer::Close()
2018-10-11 12:26:20 +01:00
Daniel Collins
61e8d23da8
Don't leak peer sockets and handle I/O errors on them.
2018-10-06 22:06:05 +01:00
Daniel Collins
fffbfe3ce4
Don't poll for TCP recv() events when processing one.
...
Clearing FD_RECV and FD_CLOSE from the event flags when processing a
recv() event will prevent the other worker threads associated with that
socket from waking up repeatedly, checking recv_busy, then sleeping
without having done anything, wasting time and potentially preventing
them from servicing their other sockets.
2018-10-06 14:07:51 +01:00
Daniel Collins
f000152a7a
Fix message ordering race in IDirectPlay8Peer::SetPeerInfo()
...
Ensure the DPNMSG_ASYNC_OP_COMPLETE message is always dispatched after
the local DPLITE_MSGID_PLAYERINFO message.
2018-10-06 14:02:51 +01:00
Daniel Collins
8db9aa277f
Maintain worker_pool only when DirectPlay8Peer is initialised.
...
This ensures any worker threads have stopped by the time we finish
returning to STATE_NEW when closing.
2018-10-06 10:53:25 +01:00
Daniel Collins
818adcbba1
Connect non-host peers in sessions together.
2018-10-05 19:26:05 +01:00
Daniel Collins
a91ded1268
Allow connecting to "IPX" addresses.
2018-10-03 23:28:47 +01:00
Daniel Collins
551cbcf43c
Include Wine DirectPlay headers rather than needing the DX SDK.
2018-10-03 23:21:02 +01:00
Daniel Collins
d2bd2bc85a
Tweak debug logging.
2018-10-03 21:35:23 +01:00
Daniel Collins
b1289366be
Address handling improvements.
...
- IDirectPlay8Peer::EnumHosts() requires a device address to specify
the service provider to emulate.
- IDirectPlay8Peer::EnumHosts() allows overriding the address/port
that discovery messages are sent to.
- IDirectPlay8Peer::Host() requires at least one address. Addresses
with different service providers are not supported yet.
- Implement IDirectPlay8Peer::GetPeerAddress() method.
- Populate pAddressSender in DPNMSG_ENUM_HOSTS_QUERY message.
- Popupate pAddressPlayer in DPNMSG_INDICATE_CONNECT message.
- Base host addresses created by IDirectPlay8Peer on service provider
of device address given to Host() method.
2018-10-03 21:21:56 +01:00
Daniel Collins
f8ee41f365
Implement basic logging functions, do some TODOs.
2018-10-02 00:46:05 +01:00
Daniel Collins
8b70fea3bc
Finish implementation of (Get|Set)ApplicationDesc()
2018-10-01 23:03:33 +01:00
Daniel Collins
f5c660f22a
Copy values for DPN_APPLICATION_DESC between peers.
2018-09-30 19:45:57 +01:00
Daniel Collins
d4d0c2f64a
Use same host enumeration parameters as DirectX.
2018-09-29 19:59:38 +01:00
Daniel Collins
f150264c93
Implement IDirectPlay8Peer::GetSPCaps() and SetSPCaps()
2018-09-29 19:56:47 +01:00
Daniel Collins
82a8842fa0
Implement IDirectPlay8Peer::GetCaps() and SetCaps()
2018-09-29 19:31:01 +01:00
Daniel Collins
c2a3b51c9d
Implement IDirectPlay8Peer::EnumServiceProviders()
2018-09-29 19:00:45 +01:00
Daniel Collins
2b1a0fb687
Exchange peer information between host/peer.
2018-09-27 22:56:36 +01:00
Daniel Collins
6b8d3eab9b
HostEnumerator: Populate host address port correctly.
2018-09-27 22:22:56 +01:00
Daniel Collins
ca6184b1c9
DirectPlay8Address: Convert ANSI strings to Unicode.
2018-09-27 22:05:38 +01:00
Daniel Collins
f19678217f
SendTo() support for DPNID_ALL_PLAYERS_GROUP, DPNSEND_NOLOOPBACK.
2018-09-24 21:43:25 +01:00
Daniel Collins
2635fd04cd
Initial SetPeerInfo() and SetPeerInfo() implementations.
...
Doesn't copy between peers and only allows fetching local player info
at this time.
2018-09-24 21:40:34 +01:00
Daniel Collins
c28f880fee
Initial prototype of a hook DLL (ddraw.dll)
2018-09-23 15:43:15 +01:00
Daniel Collins
45b4fd19bd
Basic message sending.
2018-09-21 01:03:49 +01:00
Daniel Collins
e8fdf2ecb1
Simple SendTo tests
2018-09-20 22:51:54 +01:00
Daniel Collins
25341f2488
Milestone: Connect a single peer!
2018-09-20 00:58:41 +01:00
Daniel Collins
98b37cf76c
WIP: DirectPlay8Peer::Connect() tests
...
Currently being developed against real DirectPlay to be a baseline.
2018-09-17 23:18:49 +01:00
Daniel Collins
da3cd1a55f
Use HandleHandlingPool to run DirectPlay8Peer worker threads.
2018-09-15 23:24:54 +01:00
Daniel Collins
f06f219d61
Implement HandleHandlingPool class.
...
This will run all the main I/O threads in DirectPlay8Peer, only
the host enumeration will be outside of it at this time.
2018-09-15 21:38:01 +01:00
Daniel Collins
26c038a24d
Build with Visual Studio toolchain rather than GCC.
...
I want C++17 features :(
2018-09-13 01:42:31 +01:00
Daniel Collins
1dd9e45145
Improve DirectPlay8Peer object management in tests.
2018-09-13 01:40:47 +01:00