mirror of
https://github.com/ValveSoftware/Proton.git
synced 2025-06-22 18:39:35 +03:00
lsteamclient: Allocate server list request handles on the PE side.
This commit is contained in:
parent
1a0811b6cc
commit
47d5d59f1b
@ -12,11 +12,21 @@ void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_Request
|
|||||||
.nFilters = nFilters,
|
.nFilters = nFilters,
|
||||||
.pRequestServersResponse = pRequestServersResponse,
|
.pRequestServersResponse = pRequestServersResponse,
|
||||||
};
|
};
|
||||||
|
struct w_request *request;
|
||||||
|
|
||||||
TRACE( "%p\n", _this );
|
TRACE( "%p\n", _this );
|
||||||
|
|
||||||
|
if (!(request = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*request) ))) return NULL;
|
||||||
|
params._ret = request;
|
||||||
|
|
||||||
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestInternetServerList, ¶ms );
|
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestInternetServerList, ¶ms );
|
||||||
return params._ret;
|
if (!request->u_request.handle)
|
||||||
|
{
|
||||||
|
HeapFree( GetProcessHeap(), 0, request );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_RequestLANServerList( struct w_iface *_this, uint32_t iApp, w_ISteamMatchmakingServerListResponse_106 *pRequestServersResponse )
|
void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_RequestLANServerList( struct w_iface *_this, uint32_t iApp, w_ISteamMatchmakingServerListResponse_106 *pRequestServersResponse )
|
||||||
@ -27,11 +37,21 @@ void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_Request
|
|||||||
.iApp = iApp,
|
.iApp = iApp,
|
||||||
.pRequestServersResponse = pRequestServersResponse,
|
.pRequestServersResponse = pRequestServersResponse,
|
||||||
};
|
};
|
||||||
|
struct w_request *request;
|
||||||
|
|
||||||
TRACE( "%p\n", _this );
|
TRACE( "%p\n", _this );
|
||||||
|
|
||||||
|
if (!(request = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*request) ))) return NULL;
|
||||||
|
params._ret = request;
|
||||||
|
|
||||||
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestLANServerList, ¶ms );
|
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestLANServerList, ¶ms );
|
||||||
return params._ret;
|
if (!request->u_request.handle)
|
||||||
|
{
|
||||||
|
HeapFree( GetProcessHeap(), 0, request );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_RequestFriendsServerList( struct w_iface *_this, uint32_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32_t nFilters, w_ISteamMatchmakingServerListResponse_106 *pRequestServersResponse )
|
void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_RequestFriendsServerList( struct w_iface *_this, uint32_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32_t nFilters, w_ISteamMatchmakingServerListResponse_106 *pRequestServersResponse )
|
||||||
@ -44,11 +64,21 @@ void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_Request
|
|||||||
.nFilters = nFilters,
|
.nFilters = nFilters,
|
||||||
.pRequestServersResponse = pRequestServersResponse,
|
.pRequestServersResponse = pRequestServersResponse,
|
||||||
};
|
};
|
||||||
|
struct w_request *request;
|
||||||
|
|
||||||
TRACE( "%p\n", _this );
|
TRACE( "%p\n", _this );
|
||||||
|
|
||||||
|
if (!(request = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*request) ))) return NULL;
|
||||||
|
params._ret = request;
|
||||||
|
|
||||||
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestFriendsServerList, ¶ms );
|
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestFriendsServerList, ¶ms );
|
||||||
return params._ret;
|
if (!request->u_request.handle)
|
||||||
|
{
|
||||||
|
HeapFree( GetProcessHeap(), 0, request );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_RequestFavoritesServerList( struct w_iface *_this, uint32_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32_t nFilters, w_ISteamMatchmakingServerListResponse_106 *pRequestServersResponse )
|
void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_RequestFavoritesServerList( struct w_iface *_this, uint32_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32_t nFilters, w_ISteamMatchmakingServerListResponse_106 *pRequestServersResponse )
|
||||||
@ -61,11 +91,21 @@ void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_Request
|
|||||||
.nFilters = nFilters,
|
.nFilters = nFilters,
|
||||||
.pRequestServersResponse = pRequestServersResponse,
|
.pRequestServersResponse = pRequestServersResponse,
|
||||||
};
|
};
|
||||||
|
struct w_request *request;
|
||||||
|
|
||||||
TRACE( "%p\n", _this );
|
TRACE( "%p\n", _this );
|
||||||
|
|
||||||
|
if (!(request = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*request) ))) return NULL;
|
||||||
|
params._ret = request;
|
||||||
|
|
||||||
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestFavoritesServerList, ¶ms );
|
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestFavoritesServerList, ¶ms );
|
||||||
return params._ret;
|
if (!request->u_request.handle)
|
||||||
|
{
|
||||||
|
HeapFree( GetProcessHeap(), 0, request );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_RequestHistoryServerList( struct w_iface *_this, uint32_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32_t nFilters, w_ISteamMatchmakingServerListResponse_106 *pRequestServersResponse )
|
void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_RequestHistoryServerList( struct w_iface *_this, uint32_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32_t nFilters, w_ISteamMatchmakingServerListResponse_106 *pRequestServersResponse )
|
||||||
@ -78,11 +118,21 @@ void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_Request
|
|||||||
.nFilters = nFilters,
|
.nFilters = nFilters,
|
||||||
.pRequestServersResponse = pRequestServersResponse,
|
.pRequestServersResponse = pRequestServersResponse,
|
||||||
};
|
};
|
||||||
|
struct w_request *request;
|
||||||
|
|
||||||
TRACE( "%p\n", _this );
|
TRACE( "%p\n", _this );
|
||||||
|
|
||||||
|
if (!(request = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*request) ))) return NULL;
|
||||||
|
params._ret = request;
|
||||||
|
|
||||||
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestHistoryServerList, ¶ms );
|
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestHistoryServerList, ¶ms );
|
||||||
return params._ret;
|
if (!request->u_request.handle)
|
||||||
|
{
|
||||||
|
HeapFree( GetProcessHeap(), 0, request );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_RequestSpectatorServerList( struct w_iface *_this, uint32_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32_t nFilters, w_ISteamMatchmakingServerListResponse_106 *pRequestServersResponse )
|
void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_RequestSpectatorServerList( struct w_iface *_this, uint32_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32_t nFilters, w_ISteamMatchmakingServerListResponse_106 *pRequestServersResponse )
|
||||||
@ -95,11 +145,21 @@ void * __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_Request
|
|||||||
.nFilters = nFilters,
|
.nFilters = nFilters,
|
||||||
.pRequestServersResponse = pRequestServersResponse,
|
.pRequestServersResponse = pRequestServersResponse,
|
||||||
};
|
};
|
||||||
|
struct w_request *request;
|
||||||
|
|
||||||
TRACE( "%p\n", _this );
|
TRACE( "%p\n", _this );
|
||||||
|
|
||||||
|
if (!(request = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*request) ))) return NULL;
|
||||||
|
params._ret = request;
|
||||||
|
|
||||||
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestSpectatorServerList, ¶ms );
|
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_RequestSpectatorServerList, ¶ms );
|
||||||
return params._ret;
|
if (!request->u_request.handle)
|
||||||
|
{
|
||||||
|
HeapFree( GetProcessHeap(), 0, request );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_ReleaseRequest( struct w_iface *_this, void *hServerListRequest )
|
void __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_ReleaseRequest( struct w_iface *_this, void *hServerListRequest )
|
||||||
@ -109,10 +169,12 @@ void __thiscall winISteamMatchmakingServers_SteamMatchMakingServers002_ReleaseRe
|
|||||||
.u_iface = _this->u_iface,
|
.u_iface = _this->u_iface,
|
||||||
.hServerListRequest = hServerListRequest,
|
.hServerListRequest = hServerListRequest,
|
||||||
};
|
};
|
||||||
|
struct w_request *request = hServerListRequest;
|
||||||
|
|
||||||
TRACE( "%p\n", _this );
|
TRACE( "%p\n", _this );
|
||||||
|
|
||||||
execute_pending_callbacks(); /* execute any pending callbacks that might still need to use the request */
|
execute_pending_callbacks(); /* execute any pending callbacks that might still need to use the request */
|
||||||
|
|
||||||
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_ReleaseRequest, ¶ms );
|
STEAMCLIENT_CALL( ISteamMatchmakingServers_SteamMatchMakingServers002_ReleaseRequest, ¶ms );
|
||||||
|
|
||||||
|
HeapFree( GetProcessHeap(), 0, request );
|
||||||
}
|
}
|
||||||
|
@ -77,4 +77,13 @@ struct u_buffer
|
|||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct u_request
|
||||||
|
{
|
||||||
|
UINT64 handle;
|
||||||
|
#ifdef __cplusplus
|
||||||
|
struct u_request &operator=(const void* value) { this->handle = (UINT_PTR)value; return *this; }
|
||||||
|
operator void*() const { return (void*)(UINT_PTR)this->handle; }
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* __STEAMCLIENT_STRUCTS_H */
|
#endif /* __STEAMCLIENT_STRUCTS_H */
|
||||||
|
@ -88,8 +88,11 @@ u_ISteamMatchmakingServerListResponse_099u *create_LinuxISteamMatchmakingServerL
|
|||||||
struct SteamMatchmakingServerListResponse_106 : u_ISteamMatchmakingServerListResponse_106
|
struct SteamMatchmakingServerListResponse_106 : u_ISteamMatchmakingServerListResponse_106
|
||||||
{
|
{
|
||||||
struct w_iface *w_iface;
|
struct w_iface *w_iface;
|
||||||
|
struct w_request *w_request;
|
||||||
static class callback_obj_tracker<SteamMatchmakingServerListResponse_106> track;
|
static class callback_obj_tracker<SteamMatchmakingServerListResponse_106> track;
|
||||||
|
|
||||||
|
SteamMatchmakingServerListResponse_106( w_ISteamMatchmakingServerListResponse_106 *w_iface, void *w_request );
|
||||||
|
|
||||||
void add_request( void *hrequest)
|
void add_request( void *hrequest)
|
||||||
{
|
{
|
||||||
if (hrequest) track.add_request( hrequest, this );
|
if (hrequest) track.add_request( hrequest, this );
|
||||||
@ -110,35 +113,28 @@ struct SteamMatchmakingServerListResponse_106 : u_ISteamMatchmakingServerListRes
|
|||||||
};
|
};
|
||||||
class callback_obj_tracker<SteamMatchmakingServerListResponse_106> SteamMatchmakingServerListResponse_106::track;
|
class callback_obj_tracker<SteamMatchmakingServerListResponse_106> SteamMatchmakingServerListResponse_106::track;
|
||||||
|
|
||||||
|
SteamMatchmakingServerListResponse_106::SteamMatchmakingServerListResponse_106( w_ISteamMatchmakingServerListResponse_106 *w_iface, void *w_request )
|
||||||
|
: w_iface( (struct w_iface *)w_iface ), w_request( (struct w_request *)w_request )
|
||||||
|
{
|
||||||
|
TRACE( "%p, %p -> %p\n", w_iface, w_request, this );
|
||||||
|
}
|
||||||
|
|
||||||
void SteamMatchmakingServerListResponse_106::ServerResponded( void *hRequest, int32_t iServer )
|
void SteamMatchmakingServerListResponse_106::ServerResponded( void *hRequest, int32_t iServer )
|
||||||
{
|
{
|
||||||
queue_vtable_callback( this->w_iface, CALL_IFACE_VTABLE_0_2, (intptr_t)hRequest, (intptr_t)iServer );
|
queue_vtable_callback( this->w_iface, CALL_IFACE_VTABLE_0_2, (intptr_t)this->w_request, (intptr_t)iServer );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SteamMatchmakingServerListResponse_106::ServerFailedToRespond( void *hRequest, int32_t iServer )
|
void SteamMatchmakingServerListResponse_106::ServerFailedToRespond( void *hRequest, int32_t iServer )
|
||||||
{
|
{
|
||||||
queue_vtable_callback( this->w_iface, CALL_IFACE_VTABLE_1_2, (intptr_t)hRequest, (intptr_t)iServer );
|
queue_vtable_callback( this->w_iface, CALL_IFACE_VTABLE_1_2, (intptr_t)this->w_request, (intptr_t)iServer );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SteamMatchmakingServerListResponse_106::RefreshComplete( void *hRequest, uint32_t response )
|
void SteamMatchmakingServerListResponse_106::RefreshComplete( void *hRequest, uint32_t response )
|
||||||
{
|
{
|
||||||
queue_vtable_callback( this->w_iface, CALL_IFACE_VTABLE_2_2, (intptr_t)hRequest, (intptr_t)response );
|
queue_vtable_callback( this->w_iface, CALL_IFACE_VTABLE_2_2, (intptr_t)this->w_request, (intptr_t)response );
|
||||||
TRACE( "RefreshComplete this %p, w_iface %p.\n", this, this->w_iface );
|
TRACE( "RefreshComplete this %p, w_iface %p.\n", this, this->w_iface );
|
||||||
}
|
}
|
||||||
|
|
||||||
SteamMatchmakingServerListResponse_106 *create_LinuxISteamMatchmakingServerListResponse_106( void *win )
|
|
||||||
{
|
|
||||||
SteamMatchmakingServerListResponse_106 *ret;
|
|
||||||
|
|
||||||
if (!win) return NULL;
|
|
||||||
|
|
||||||
if (!(ret = new SteamMatchmakingServerListResponse_106())) return NULL;
|
|
||||||
ret->w_iface = (struct w_iface *)win;
|
|
||||||
|
|
||||||
TRACE("-> %p.\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct SteamMatchmakingPingResponse : u_ISteamMatchmakingPingResponse
|
struct SteamMatchmakingPingResponse : u_ISteamMatchmakingPingResponse
|
||||||
{
|
{
|
||||||
struct w_iface *w_iface;
|
struct w_iface *w_iface;
|
||||||
@ -301,60 +297,66 @@ static NTSTATUS ISteamMatchmakingServers_RequestSpectatorServerList( u_ISteamMat
|
|||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_RequestInternetServerList( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_RequestInternetServerList( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
SteamMatchmakingServerListResponse_106 *u_response = create_LinuxISteamMatchmakingServerListResponse_106( params->pRequestServersResponse );
|
SteamMatchmakingServerListResponse_106 *u_response = new SteamMatchmakingServerListResponse_106( params->pRequestServersResponse, params->_ret );
|
||||||
params->_ret = iface->RequestInternetServerList( params->iApp, params->ppchFilters, params->nFilters, u_response );
|
struct w_request *w_request = u_response->w_request;
|
||||||
if (!params->_ret) delete u_response;
|
w_request->u_request = iface->RequestInternetServerList( params->iApp, params->ppchFilters, params->nFilters, u_response );
|
||||||
else u_response->add_request( params->_ret );
|
if (!w_request->u_request) delete u_response;
|
||||||
|
else u_response->add_request( w_request );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_RequestLANServerList( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_RequestLANServerList( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
SteamMatchmakingServerListResponse_106 *u_response = create_LinuxISteamMatchmakingServerListResponse_106( params->pRequestServersResponse );
|
SteamMatchmakingServerListResponse_106 *u_response = new SteamMatchmakingServerListResponse_106( params->pRequestServersResponse, params->_ret );
|
||||||
params->_ret = iface->RequestLANServerList( params->iApp, u_response );
|
struct w_request *w_request = u_response->w_request;
|
||||||
if (!params->_ret) delete u_response;
|
w_request->u_request = iface->RequestLANServerList( params->iApp, u_response );
|
||||||
else u_response->add_request( params->_ret );
|
if (!w_request->u_request) delete u_response;
|
||||||
|
else u_response->add_request( w_request );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_RequestFriendsServerList( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_RequestFriendsServerList( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
SteamMatchmakingServerListResponse_106 *u_response = create_LinuxISteamMatchmakingServerListResponse_106( params->pRequestServersResponse );
|
SteamMatchmakingServerListResponse_106 *u_response = new SteamMatchmakingServerListResponse_106( params->pRequestServersResponse, params->_ret );
|
||||||
params->_ret = iface->RequestFriendsServerList( params->iApp, params->ppchFilters, params->nFilters, u_response );
|
struct w_request *w_request = u_response->w_request;
|
||||||
if (!params->_ret) delete u_response;
|
w_request->u_request = iface->RequestFriendsServerList( params->iApp, params->ppchFilters, params->nFilters, u_response );
|
||||||
else u_response->add_request( params->_ret );
|
if (!w_request->u_request) delete u_response;
|
||||||
|
else u_response->add_request( w_request );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_RequestFavoritesServerList( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_RequestFavoritesServerList( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
SteamMatchmakingServerListResponse_106 *u_response = create_LinuxISteamMatchmakingServerListResponse_106( params->pRequestServersResponse );
|
SteamMatchmakingServerListResponse_106 *u_response = new SteamMatchmakingServerListResponse_106( params->pRequestServersResponse, params->_ret );
|
||||||
params->_ret = iface->RequestFavoritesServerList( params->iApp, params->ppchFilters, params->nFilters, u_response );
|
struct w_request *w_request = u_response->w_request;
|
||||||
if (!params->_ret) delete u_response;
|
w_request->u_request = iface->RequestFavoritesServerList( params->iApp, params->ppchFilters, params->nFilters, u_response );
|
||||||
else u_response->add_request( params->_ret );
|
if (!w_request->u_request) delete u_response;
|
||||||
|
else u_response->add_request( w_request );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_RequestHistoryServerList( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_RequestHistoryServerList( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
SteamMatchmakingServerListResponse_106 *u_response = create_LinuxISteamMatchmakingServerListResponse_106( params->pRequestServersResponse );
|
SteamMatchmakingServerListResponse_106 *u_response = new SteamMatchmakingServerListResponse_106( params->pRequestServersResponse, params->_ret );
|
||||||
params->_ret = iface->RequestHistoryServerList( params->iApp, params->ppchFilters, params->nFilters, u_response );
|
struct w_request *w_request = u_response->w_request;
|
||||||
if (!params->_ret) delete u_response;
|
w_request->u_request = iface->RequestHistoryServerList( params->iApp, params->ppchFilters, params->nFilters, u_response );
|
||||||
else u_response->add_request( params->_ret );
|
if (!w_request->u_request) delete u_response;
|
||||||
|
else u_response->add_request( w_request );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_RequestSpectatorServerList( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_RequestSpectatorServerList( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
SteamMatchmakingServerListResponse_106 *u_response = create_LinuxISteamMatchmakingServerListResponse_106( params->pRequestServersResponse );
|
SteamMatchmakingServerListResponse_106 *u_response = new SteamMatchmakingServerListResponse_106( params->pRequestServersResponse, params->_ret );
|
||||||
params->_ret = iface->RequestSpectatorServerList( params->iApp, params->ppchFilters, params->nFilters, u_response );
|
struct w_request *w_request = u_response->w_request;
|
||||||
if (!params->_ret) delete u_response;
|
w_request->u_request = iface->RequestSpectatorServerList( params->iApp, params->ppchFilters, params->nFilters, u_response );
|
||||||
else u_response->add_request( params->_ret );
|
if (!w_request->u_request) delete u_response;
|
||||||
|
else u_response->add_request( w_request );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,50 +387,57 @@ static NTSTATUS ISteamMatchmakingServers_ServerRules( Iface *iface, Params *para
|
|||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_ReleaseRequest( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_ReleaseRequest( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
iface->ReleaseRequest( params->hServerListRequest );
|
struct w_request *w_request = (struct w_request *)(void *)params->hServerListRequest;
|
||||||
SteamMatchmakingServerListResponse_106::request_released( params->hServerListRequest );
|
iface->ReleaseRequest( w_request ? (void *)w_request->u_request : nullptr );
|
||||||
|
SteamMatchmakingServerListResponse_106::request_released( w_request );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_GetServerDetails( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_GetServerDetails( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
params->_ret = iface->GetServerDetails( params->hRequest, params->iServer );
|
struct w_request *w_request = (struct w_request *)(void *)params->hRequest;
|
||||||
|
params->_ret = iface->GetServerDetails( w_request ? (void *)w_request->u_request : nullptr, params->iServer );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_CancelQuery( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_CancelQuery( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
iface->CancelQuery( params->hRequest );
|
struct w_request *w_request = (struct w_request *)(void *)params->hRequest;
|
||||||
|
iface->CancelQuery( w_request ? (void *)w_request->u_request : nullptr );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_RefreshQuery( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_RefreshQuery( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
iface->RefreshQuery( params->hRequest );
|
struct w_request *w_request = (struct w_request *)(void *)params->hRequest;
|
||||||
|
iface->RefreshQuery( w_request ? (void *)w_request->u_request : nullptr );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_IsRefreshing( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_IsRefreshing( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
params->_ret = iface->IsRefreshing( params->hRequest );
|
struct w_request *w_request = (struct w_request *)(void *)params->hRequest;
|
||||||
|
params->_ret = iface->IsRefreshing( w_request ? (void *)w_request->u_request : nullptr );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_GetServerCount( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_GetServerCount( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
params->_ret = iface->GetServerCount( params->hRequest );
|
struct w_request *w_request = (struct w_request *)(void *)params->hRequest;
|
||||||
|
params->_ret = iface->GetServerCount( w_request ? (void *)w_request->u_request : nullptr );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Iface, typename Params >
|
template< typename Iface, typename Params >
|
||||||
static NTSTATUS ISteamMatchmakingServers_RefreshServer( Iface *iface, Params *params )
|
static NTSTATUS ISteamMatchmakingServers_RefreshServer( Iface *iface, Params *params )
|
||||||
{
|
{
|
||||||
iface->RefreshServer( params->hRequest, params->iServer );
|
struct w_request *w_request = (struct w_request *)(void *)params->hRequest;
|
||||||
|
iface->RefreshServer( w_request ? (void *)w_request->u_request : nullptr, params->iServer );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,6 +225,11 @@ struct networking_message
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct w_request
|
||||||
|
{
|
||||||
|
struct u_request u_request;
|
||||||
|
};
|
||||||
|
|
||||||
#include <poppack.h>
|
#include <poppack.h>
|
||||||
|
|
||||||
NTSTATUS steamclient_call( unsigned int code, void *args, const char *name );
|
NTSTATUS steamclient_call( unsigned int code, void *args, const char *name );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user