This allows STAR WARS Galactic Battlegrounds Saga to join and play multiplayer sessions created by native dplay.
From: Anton Baskanov baskanov@gmail.com
--- dlls/dplayx/tests/dplayx.c | 192 ++++++++++++++++++++++++++++++++++++- 1 file changed, 190 insertions(+), 2 deletions(-)
diff --git a/dlls/dplayx/tests/dplayx.c b/dlls/dplayx/tests/dplayx.c index 3efae753408..c1a954554f9 100644 --- a/dlls/dplayx/tests/dplayx.c +++ b/dlls/dplayx/tests/dplayx.c @@ -1345,7 +1345,7 @@ static void sendEnumSessionsReply_( int line, SOCKET sock, unsigned short port, ok_( __FILE__, line )( wsResult == size, "send() returned %d.\n", wsResult ); }
-#define receiveRequestPlayerId( sock, expectedFlags, flagsTodo ) receiveRequestPlayerId_( __LINE__, sock, expectedFlags, flagsTodo ) +#define receiveRequestPlayerId( sock, expectedFlags ) receiveRequestPlayerId_( __LINE__, sock, expectedFlags ) static unsigned short receiveRequestPlayerId_( int line, SOCKET sock, DWORD expectedFlags ) { #include "pshpack1.h" @@ -9537,6 +9537,193 @@ static void test_GetMessageCount(void) /* GetMessageQueue */
static void test_GetMessageQueue(void) +{ + BYTE playerData[] = { 1, 2, 3, 4, 5, 6, 7, 8, }; + BYTE data[] = { 1, 2, 3, 4, }; + DPSESSIONDESC2 appGuidDpsd = + { + .dwSize = sizeof( DPSESSIONDESC2 ), + .guidApplication = appGuid, + .guidInstance = appGuid, + }; + DPSESSIONDESC2 serverDpsd = + { + .dwSize = sizeof( DPSESSIONDESC2 ), + .guidApplication = appGuid, + .guidInstance = appGuid, + .lpszSessionName = (WCHAR *) L"normal", + .dwReserved1 = 0xaabbccdd, + }; + DPNAME name = + { + .dwSize = sizeof( DPNAME ), + .lpszShortNameA = (char *) "short name", + }; + DWORD createPlayerMsgSize; + CreatePlayerParam *param; + IDirectPlay4 *dpA; + IDirectPlay4 *dp; + DWORD waitResult; + SOCKET sendSock; + SOCKET recvSock; + DWORD byteCount; + DWORD msgCount; + HANDLE event; + HRESULT hr; + DPID dpid; + + event = CreateEventA( NULL, FALSE, FALSE, NULL ); + + hr = CoCreateInstance( &CLSID_DirectPlay, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectPlay4A, (void **) &dpA ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + hr = IDirectPlayX_QueryInterface( dpA, &IID_IDirectPlay4, (void **) &dp ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0, 0, &msgCount, &byteCount ); + todo_wine ok( hr == DPERR_UNINITIALIZED, "got hr %#lx.\n", hr ); + ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); + ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount ); + + init_TCPIP_provider( dpA, "127.0.0.1", 0 ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0, DPMESSAGEQUEUE_SEND | DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DPERR_INVALIDFLAGS, "got hr %#lx.\n", hr ); + ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); + ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0, 4, &msgCount, &byteCount ); + todo_wine ok( hr == DPERR_INVALIDFLAGS, "got hr %#lx.\n", hr ); + ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); + ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0x07734, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); + ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); + ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0x07734, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); + ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); + ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); + todo_wine ok( msgCount == 0, "got message count %lu.\n", msgCount ); + todo_wine ok( byteCount == 0, "got byte count %lu.\n", byteCount ); + + joinSession( dpA, &appGuidDpsd, &serverDpsd, &sendSock, &recvSock, NULL ); + + createPlayer( dpA, 0x07734, NULL, NULL, 0, 0, sendSock, recvSock ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0x07734, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); + todo_wine ok( msgCount == 0, "got message count %lu.\n", msgCount ); + todo_wine ok( byteCount == 0, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0x07734, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); + todo_wine ok( msgCount == 0, "got message count %lu.\n", msgCount ); + todo_wine ok( byteCount == 0, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0x1337, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); + todo_wine ok( msgCount == 0, "got message count %lu.\n", msgCount ); + todo_wine ok( byteCount == 0, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0x1337, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); + ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); + ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0x5e7, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); + ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); + ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0x5e7, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); + ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); + ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount ); + + dpid = 0xdeadbeef; + param = createPlayerAsync( dpA, &dpid, &name, event, playerData, sizeof( playerData ), 0 ); + receiveRequestPlayerId( recvSock, DPPLAYER_LOCAL ); + sendRequestPlayerReply( sendSock, 2349, 0x14, DP_OK ); + receiveCreatePlayer( recvSock, 0x14, DPPLAYER_LOCAL, L"short name", NULL, playerData, sizeof( playerData ) ); + hr = createPlayerAsyncWait( param, 2000 ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + ok( dpid == 0x14, "got dpid %#lx.\n", dpid ); + + sendGuaranteedGameMessage( sendSock, 2349, 0x1337, 0x14, data, sizeof( data ) ); + + waitResult = WaitForSingleObject( event, 2000 ); + ok( waitResult == WAIT_OBJECT_0, "message wait returned %lu\n", waitResult ); + + /* Both UNICODE and ANSI GetMessageQueue() return the same size. */ + createPlayerMsgSize = sizeof( DPMSG_CREATEPLAYERORGROUP ) + sizeof( playerData ) + sizeof( L"short name" ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0x07734, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); + todo_wine ok( msgCount == 1, "got message count %lu.\n", msgCount ); + todo_wine ok( byteCount == createPlayerMsgSize, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dp, 0, 0x07734, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); + todo_wine ok( msgCount == 1, "got message count %lu.\n", msgCount ); + todo_wine ok( byteCount == createPlayerMsgSize, "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0x1337, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); + todo_wine ok( msgCount == 1, "got message count %lu.\n", msgCount ); + todo_wine ok( byteCount == sizeof( data ), "got byte count %lu.\n", byteCount ); + + msgCount = 0xdeadbeef; + byteCount = 0xdeadbeef; + hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); + todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); + todo_wine ok( msgCount == 2, "got message count %lu.\n", msgCount ); + todo_wine ok( byteCount == createPlayerMsgSize + sizeof( data ), "got byte count %lu.\n", byteCount ); + + closesocket( recvSock ); + closesocket( sendSock ); + + IDirectPlayX_Release( dp ); + IDirectPlayX_Release( dpA ); + + CloseHandle( event ); +} + +static void test_interactive_GetMessageQueue(void) {
IDirectPlay4 *pDP[2]; @@ -10570,6 +10757,7 @@ START_TEST(dplayx) test_PING(); test_AddPlayerToGroup(); test_GROUPDATACHANGED(); + test_GetMessageQueue();
if (!winetest_interactive) { @@ -10609,7 +10797,7 @@ START_TEST(dplayx) test_interactive_Send(); test_interactive_Receive(); test_GetMessageCount(); - test_GetMessageQueue(); + test_interactive_GetMessageQueue();
test_remote_data_replication(); test_host_migration();
From: Anton Baskanov baskanov@gmail.com
--- dlls/dplayx/dplay.c | 70 +++++++++++++++++++++++++++++++++++++- dlls/dplayx/tests/dplayx.c | 64 +++++++++++++++++----------------- 2 files changed, 101 insertions(+), 33 deletions(-)
diff --git a/dlls/dplayx/dplay.c b/dlls/dplayx/dplay.c index 9ed4c25b737..24fb9476afe 100644 --- a/dlls/dplayx/dplay.c +++ b/dlls/dplayx/dplay.c @@ -5959,9 +5959,75 @@ static HRESULT WINAPI IDirectPlay4Impl_GetMessageQueue( IDirectPlay4 *iface, DPI DWORD flags, DWORD *msgs, DWORD *bytes ) { IDirectPlayImpl *This = impl_from_IDirectPlay4( iface ); + struct PlayerList *playerFrom = NULL; + struct PlayerList *playerTo = NULL; HRESULT hr = DP_OK;
- FIXME( "(%p)->(0x%08lx,0x%08lx,0x%08lx,%p,%p): semi-stub\n", This, from, to, flags, msgs, bytes ); + TRACE( "(%p)->(0x%08lx,0x%08lx,0x%08lx,%p,%p)\n", This, from, to, flags, msgs, bytes ); + + if ( This->dp2->connectionInitialized == NO_PROVIDER ) + return DPERR_UNINITIALIZED; + + if ( !flags ) + flags = DPMESSAGEQUEUE_SEND; + + if ( flags != DPMESSAGEQUEUE_SEND && flags != DPMESSAGEQUEUE_RECEIVE ) + return DPERR_INVALIDFLAGS; + + EnterCriticalSection( &This->lock ); + + if ( to ) + { + playerTo = DP_FindPlayer( This, to ); + if ( !playerTo ) + { + LeaveCriticalSection( &This->lock ); + return DPERR_INVALIDPLAYER; + } + } + + if ( from ) + { + playerFrom = DP_FindPlayer( This, from ); + if ( !playerFrom ) + { + LeaveCriticalSection( &This->lock ); + return DPERR_INVALIDPLAYER; + } + } + + if ( flags & DPMESSAGEQUEUE_RECEIVE ) + { + DWORD byteCount = 0; + DWORD msgCount = 0; + struct DPMSG *msg; + + if ( playerTo && !(playerTo->lpPData->dwFlags & DPPLAYER_LOCAL) ) + { + LeaveCriticalSection( &This->lock ); + return DPERR_INVALIDPLAYER; + } + + for ( msg = DPQ_FIRST( This->dp2->receiveMsgs ); msg; msg = DPQ_NEXT( msg->msgs ) ) + { + if( from && msg->fromId != from ) + continue; + if( to && msg->toId != to ) + continue; + + ++msgCount; + byteCount += msg->copyMessage( NULL, msg->msg, msg->genericSize, FALSE ); + } + + if ( msgs ) + *msgs = msgCount; + if ( bytes ) + *bytes = byteCount; + + LeaveCriticalSection( &This->lock ); + + return DP_OK; + }
/* FIXME: Do we need to do from and to sanity checking here? */ /* FIXME: What about sends which are not immediate? */ @@ -5985,6 +6051,8 @@ static HRESULT WINAPI IDirectPlay4Impl_GetMessageQueue( IDirectPlay4 *iface, DPI else FIXME( "No SP for GetMessageQueue - fake some data\n" );
+ LeaveCriticalSection( &This->lock ); + return hr; }
diff --git a/dlls/dplayx/tests/dplayx.c b/dlls/dplayx/tests/dplayx.c index c1a954554f9..642e97b2e3d 100644 --- a/dlls/dplayx/tests/dplayx.c +++ b/dlls/dplayx/tests/dplayx.c @@ -9582,7 +9582,7 @@ static void test_GetMessageQueue(void) msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0, 0, &msgCount, &byteCount ); - todo_wine ok( hr == DPERR_UNINITIALIZED, "got hr %#lx.\n", hr ); + ok( hr == DPERR_UNINITIALIZED, "got hr %#lx.\n", hr ); ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount );
@@ -9591,37 +9591,37 @@ static void test_GetMessageQueue(void) msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0, DPMESSAGEQUEUE_SEND | DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DPERR_INVALIDFLAGS, "got hr %#lx.\n", hr ); + ok( hr == DPERR_INVALIDFLAGS, "got hr %#lx.\n", hr ); ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0, 4, &msgCount, &byteCount ); - todo_wine ok( hr == DPERR_INVALIDFLAGS, "got hr %#lx.\n", hr ); + ok( hr == DPERR_INVALIDFLAGS, "got hr %#lx.\n", hr ); ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0x07734, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); + ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0x07734, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); + ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); - todo_wine ok( msgCount == 0, "got message count %lu.\n", msgCount ); - todo_wine ok( byteCount == 0, "got byte count %lu.\n", byteCount ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + ok( msgCount == 0, "got message count %lu.\n", msgCount ); + ok( byteCount == 0, "got byte count %lu.\n", byteCount );
joinSession( dpA, &appGuidDpsd, &serverDpsd, &sendSock, &recvSock, NULL );
@@ -9630,42 +9630,42 @@ static void test_GetMessageQueue(void) msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0x07734, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); - todo_wine ok( msgCount == 0, "got message count %lu.\n", msgCount ); - todo_wine ok( byteCount == 0, "got byte count %lu.\n", byteCount ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + ok( msgCount == 0, "got message count %lu.\n", msgCount ); + ok( byteCount == 0, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0x07734, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); - todo_wine ok( msgCount == 0, "got message count %lu.\n", msgCount ); - todo_wine ok( byteCount == 0, "got byte count %lu.\n", byteCount ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + ok( msgCount == 0, "got message count %lu.\n", msgCount ); + ok( byteCount == 0, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0x1337, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); - todo_wine ok( msgCount == 0, "got message count %lu.\n", msgCount ); - todo_wine ok( byteCount == 0, "got byte count %lu.\n", byteCount ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + ok( msgCount == 0, "got message count %lu.\n", msgCount ); + ok( byteCount == 0, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0x1337, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); + ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0x5e7, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); + ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0x5e7, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); + ok( hr == DPERR_INVALIDPLAYER, "got hr %#lx.\n", hr ); ok( msgCount == 0xdeadbeef, "got message count %lu.\n", msgCount ); ok( byteCount == 0xdeadbeef, "got byte count %lu.\n", byteCount );
@@ -9689,30 +9689,30 @@ static void test_GetMessageQueue(void) msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0x07734, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); - todo_wine ok( msgCount == 1, "got message count %lu.\n", msgCount ); - todo_wine ok( byteCount == createPlayerMsgSize, "got byte count %lu.\n", byteCount ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + ok( msgCount == 1, "got message count %lu.\n", msgCount ); + ok( byteCount == createPlayerMsgSize, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dp, 0, 0x07734, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); - todo_wine ok( msgCount == 1, "got message count %lu.\n", msgCount ); - todo_wine ok( byteCount == createPlayerMsgSize, "got byte count %lu.\n", byteCount ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + ok( msgCount == 1, "got message count %lu.\n", msgCount ); + ok( byteCount == createPlayerMsgSize, "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0x1337, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); - todo_wine ok( msgCount == 1, "got message count %lu.\n", msgCount ); - todo_wine ok( byteCount == sizeof( data ), "got byte count %lu.\n", byteCount ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + ok( msgCount == 1, "got message count %lu.\n", msgCount ); + ok( byteCount == sizeof( data ), "got byte count %lu.\n", byteCount );
msgCount = 0xdeadbeef; byteCount = 0xdeadbeef; hr = IDirectPlayX_GetMessageQueue( dpA, 0, 0, DPMESSAGEQUEUE_RECEIVE, &msgCount, &byteCount ); - todo_wine ok( hr == DP_OK, "got hr %#lx.\n", hr ); - todo_wine ok( msgCount == 2, "got message count %lu.\n", msgCount ); - todo_wine ok( byteCount == createPlayerMsgSize + sizeof( data ), "got byte count %lu.\n", byteCount ); + ok( hr == DP_OK, "got hr %#lx.\n", hr ); + ok( msgCount == 2, "got message count %lu.\n", msgCount ); + ok( byteCount == createPlayerMsgSize + sizeof( data ), "got byte count %lu.\n", byteCount );
closesocket( recvSock ); closesocket( sendSock );
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=149932
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
dplayx: dplayx.c:4101: Test failed: recv() returned 52. dplayx.c:4102: Test failed: recv() returned 52. dplayx.c:4110: Test failed: recv() returned 52. dplayx.c:4126: Test failed: recv() returned 52. dplayx.c:4129: Test failed: got flags 0.
=== w10pro64_en_AE_u8 (32 bit report) ===
dplayx: dplayx.c:4101: Test failed: recv() returned 52. dplayx.c:4102: Test failed: recv() returned 52. dplayx.c:4113: Test failed: recv() returned 52. dplayx.c:4126: Test failed: recv() returned 52. dplayx.c:4129: Test failed: got flags 0. dplayx.c:3398: Test failed: got flags 0.
=== debian11 (32 bit hi:IN report) ===
dplayx: dplayx.c:9676: Test failed: got mixed 0xfab00090. dplayx.c:9676: Test failed: got player info size 90. dplayx.c:9676: Test failed: got short name length 2. dplayx.c:9676: Test failed: got short name L"". dplayx.c:9676: Test failed: recv() returned 26. dplayx.c:9676: Test failed: got TCP family 0. dplayx.c:9676: Test failed: got TCP port 0. dplayx.c:9676: Test failed: got UDP family 1541. dplayx.c:9676: Test failed: got UDP port 1800. dplayx.c:9676: Test failed: recv() returned -1. dplayx.c:9676: Test failed: player data didn't match. dplayx.c:9676: Test failed: recv() returned -1. dplayx.c:9676: Test failed: got reserved1 52428. dplayx.c:9676: Test failed: recv() returned -1. dplayx.c:9676: Test failed: got reserved2 3435973836. dplayx.c:9694: Test failed: got byte count 58. dplayx.c:9701: Test failed: got byte count 58. dplayx.c:9715: Test failed: got byte count 62.
=== debian11b (32 bit WoW report) ===
dplayx: dplayx.c:4109: Test failed: recv() returned 52. dplayx.c:4117: Test failed: recv() returned 52. dplayx.c:4124: Test failed: recv() returned 52. dplayx.c:4129: Test failed: got flags 0. dplayx.c:4130: Test failed: got flags 0.
=== debian11b (64 bit WoW report) ===
user32: input.c:4305: Test succeeded inside todo block: button_down_hwnd_todo 1: got MSG_TEST_WIN hwnd 0000000001FD00E6, msg WM_LBUTTONDOWN, wparam 0x1, lparam 0x320032
This merge request was approved by Alistair Leslie-Hughes.