lsteamclient: Use manual method wrapper instead of post-exec.

CW-Bug-Id: #22729
This commit is contained in:
Rémi Bernon 2023-09-30 14:10:56 +02:00
parent 4092684400
commit fce62d2dfd
22 changed files with 438 additions and 501 deletions

View File

@ -5,6 +5,7 @@ EXTRADLLFLAGS = -mcygwin -static-libgcc -static-libstdc++ -ldl
EXTRADEFS = -DWINE_NO_LONG_TYPES -DSTEAM_API_EXPORTS -Dprivate=public -Dprotected=public
SOURCES = \
steam_client_manual.c \
steamclient_main.c \
steamclient_wrappers.c \
winISteamAppList.c \

View File

@ -33,7 +33,6 @@ void cppISteamClient_SteamClient006_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient006 *iface = (struct u_ISteamClient_SteamClient006 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient006_BReleaseSteamPipe( struct cppISteamClient_SteamClient006_BReleaseSteamPipe_params *params )

View File

@ -34,7 +34,6 @@ void cppISteamClient_SteamClient007_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient007 *iface = (struct u_ISteamClient_SteamClient007 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient007_BReleaseSteamPipe( struct cppISteamClient_SteamClient007_BReleaseSteamPipe_params *params )

View File

@ -33,7 +33,6 @@ void cppISteamClient_SteamClient008_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient008 *iface = (struct u_ISteamClient_SteamClient008 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient008_BReleaseSteamPipe( struct cppISteamClient_SteamClient008_BReleaseSteamPipe_params *params )

View File

@ -34,7 +34,6 @@ void cppISteamClient_SteamClient009_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient009 *iface = (struct u_ISteamClient_SteamClient009 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient009_BReleaseSteamPipe( struct cppISteamClient_SteamClient009_BReleaseSteamPipe_params *params )

View File

@ -36,7 +36,6 @@ void cppISteamClient_SteamClient010_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient010 *iface = (struct u_ISteamClient_SteamClient010 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient010_BReleaseSteamPipe( struct cppISteamClient_SteamClient010_BReleaseSteamPipe_params *params )
@ -170,7 +169,6 @@ void cppISteamClient_SteamClient010_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient010 *iface = (struct u_ISteamClient_SteamClient010 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient010_GetISteamHTTP( struct cppISteamClient_SteamClient010_GetISteamHTTP_params *params )

View File

@ -37,7 +37,6 @@ void cppISteamClient_SteamClient011_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient011 *iface = (struct u_ISteamClient_SteamClient011 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient011_BReleaseSteamPipe( struct cppISteamClient_SteamClient011_BReleaseSteamPipe_params *params )
@ -177,7 +176,6 @@ void cppISteamClient_SteamClient011_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient011 *iface = (struct u_ISteamClient_SteamClient011 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient011_GetISteamHTTP( struct cppISteamClient_SteamClient011_GetISteamHTTP_params *params )

View File

@ -39,7 +39,6 @@ void cppISteamClient_SteamClient012_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient012 *iface = (struct u_ISteamClient_SteamClient012 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient012_BReleaseSteamPipe( struct cppISteamClient_SteamClient012_BReleaseSteamPipe_params *params )
@ -173,7 +172,6 @@ void cppISteamClient_SteamClient012_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient012 *iface = (struct u_ISteamClient_SteamClient012 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient012_GetISteamHTTP( struct cppISteamClient_SteamClient012_GetISteamHTTP_params *params )

View File

@ -42,7 +42,6 @@ void cppISteamClient_SteamClient013_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient013 *iface = (struct u_ISteamClient_SteamClient013 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient013_BReleaseSteamPipe( struct cppISteamClient_SteamClient013_BReleaseSteamPipe_params *params )
@ -176,7 +175,6 @@ void cppISteamClient_SteamClient013_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient013 *iface = (struct u_ISteamClient_SteamClient013 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient013_GetISteamHTTP( struct cppISteamClient_SteamClient013_GetISteamHTTP_params *params )

View File

@ -41,7 +41,6 @@ void cppISteamClient_SteamClient014_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient014 *iface = (struct u_ISteamClient_SteamClient014 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient014_BReleaseSteamPipe( struct cppISteamClient_SteamClient014_BReleaseSteamPipe_params *params )
@ -175,7 +174,6 @@ void cppISteamClient_SteamClient014_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient014 *iface = (struct u_ISteamClient_SteamClient014 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient014_GetISteamHTTP( struct cppISteamClient_SteamClient014_GetISteamHTTP_params *params )

View File

@ -42,7 +42,6 @@ void cppISteamClient_SteamClient015_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient015 *iface = (struct u_ISteamClient_SteamClient015 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient015_BReleaseSteamPipe( struct cppISteamClient_SteamClient015_BReleaseSteamPipe_params *params )
@ -176,7 +175,6 @@ void cppISteamClient_SteamClient015_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient015 *iface = (struct u_ISteamClient_SteamClient015 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient015_GetISteamHTTP( struct cppISteamClient_SteamClient015_GetISteamHTTP_params *params )

View File

@ -46,7 +46,6 @@ void cppISteamClient_SteamClient016_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient016 *iface = (struct u_ISteamClient_SteamClient016 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient016_BReleaseSteamPipe( struct cppISteamClient_SteamClient016_BReleaseSteamPipe_params *params )
@ -180,7 +179,6 @@ void cppISteamClient_SteamClient016_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient016 *iface = (struct u_ISteamClient_SteamClient016 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient016_GetISteamHTTP( struct cppISteamClient_SteamClient016_GetISteamHTTP_params *params )

View File

@ -49,7 +49,6 @@ void cppISteamClient_SteamClient017_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient017 *iface = (struct u_ISteamClient_SteamClient017 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient017_BReleaseSteamPipe( struct cppISteamClient_SteamClient017_BReleaseSteamPipe_params *params )
@ -183,7 +182,6 @@ void cppISteamClient_SteamClient017_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient017 *iface = (struct u_ISteamClient_SteamClient017 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient017_GetISteamHTTP( struct cppISteamClient_SteamClient017_GetISteamHTTP_params *params )

View File

@ -52,7 +52,6 @@ void cppISteamClient_SteamClient018_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient018 *iface = (struct u_ISteamClient_SteamClient018 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient018_BReleaseSteamPipe( struct cppISteamClient_SteamClient018_BReleaseSteamPipe_params *params )
@ -192,7 +191,6 @@ void cppISteamClient_SteamClient018_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient018 *iface = (struct u_ISteamClient_SteamClient018 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient018_GetISteamHTTP( struct cppISteamClient_SteamClient018_GetISteamHTTP_params *params )

View File

@ -53,7 +53,6 @@ void cppISteamClient_SteamClient019_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient019 *iface = (struct u_ISteamClient_SteamClient019 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient019_BReleaseSteamPipe( struct cppISteamClient_SteamClient019_BReleaseSteamPipe_params *params )
@ -193,7 +192,6 @@ void cppISteamClient_SteamClient019_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient019 *iface = (struct u_ISteamClient_SteamClient019 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient019_GetISteamHTTP( struct cppISteamClient_SteamClient019_GetISteamHTTP_params *params )

View File

@ -54,7 +54,6 @@ void cppISteamClient_SteamClient020_CreateSteamPipe( struct cppISteamClient_Stea
{
struct u_ISteamClient_SteamClient020 *iface = (struct u_ISteamClient_SteamClient020 *)params->linux_side;
params->_ret = iface->CreateSteamPipe( );
params->_ret = after_steam_pipe_create( params->_ret );
}
void cppISteamClient_SteamClient020_BReleaseSteamPipe( struct cppISteamClient_SteamClient020_BReleaseSteamPipe_params *params )
@ -194,7 +193,6 @@ void cppISteamClient_SteamClient020_BShutdownIfAllPipesClosed( struct cppISteamC
{
struct u_ISteamClient_SteamClient020 *iface = (struct u_ISteamClient_SteamClient020 *)params->linux_side;
params->_ret = iface->BShutdownIfAllPipesClosed( );
params->_ret = after_shutdown( params->_ret );
}
void cppISteamClient_SteamClient020_GetISteamHTTP( struct cppISteamClient_SteamClient020_GetISteamHTTP_params *params )

View File

@ -228,13 +228,11 @@ MANUAL_METHODS = {
"ISteamNetworkingFakeUDPPort_DestroyFakeUDPPort": lambda ver, abi: abi == 'u',
"ISteamNetworkingFakeUDPPort_ReceiveMessages": lambda ver, abi: abi == 'u',
"ISteamClient_BShutdownIfAllPipesClosed": lambda ver, abi: abi == 'w',
"ISteamClient_CreateSteamPipe": lambda ver, abi: abi == 'w',
"ISteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess": lambda ver, abi: abi == 'u' and ver >= 20,
}
POST_EXEC_FUNCS = {
"ISteamClient_BShutdownIfAllPipesClosed" : "after_shutdown",
"ISteamClient_CreateSteamPipe" : "after_steam_pipe_create",
}
DEFINE_INTERFACE_VERSION = re.compile(r'^#define\s*(?P<name>STEAM(?:\w*)_VERSION(?:\w*))\s*"(?P<version>.*)"')
@ -250,9 +248,6 @@ def is_manual_method(klass, method, abi):
return needs_manual
def post_execution_function(classname, method_name):
return POST_EXEC_FUNCS.get(classname + "_" + method_name, None)
# manual converters for simple types (function pointers)
MANUAL_TYPES = [
"FSteamNetworkingSocketsDebugOutput",
@ -956,9 +951,6 @@ def handle_method_cpp(method, classname, cppname, out):
for name, param in sorted(need_output.items()):
out(f' *params->{name} = u_{name};\n')
if method.result_type.kind != TypeKind.VOID:
post_exec = post_execution_function(classname, method.spelling)
if post_exec: out(f' params->_ret = {post_exec}( params->_ret );\n')
out(u'}\n\n')

View File

@ -0,0 +1,430 @@
#include "steamclient_private.h"
#include <assert.h>
#include <pthread.h>
#include "cppISteamClient_SteamClient006.h"
#include "cppISteamClient_SteamClient007.h"
#include "cppISteamClient_SteamClient008.h"
#include "cppISteamClient_SteamClient009.h"
#include "cppISteamClient_SteamClient010.h"
#include "cppISteamClient_SteamClient011.h"
#include "cppISteamClient_SteamClient012.h"
#include "cppISteamClient_SteamClient013.h"
#include "cppISteamClient_SteamClient014.h"
#include "cppISteamClient_SteamClient015.h"
#include "cppISteamClient_SteamClient016.h"
#include "cppISteamClient_SteamClient017.h"
#include "cppISteamClient_SteamClient018.h"
#include "cppISteamClient_SteamClient019.h"
#include "cppISteamClient_SteamClient020.h"
WINE_DEFAULT_DEBUG_CHANNEL(steamclient);
static HANDLE callback_thread_handle;
#define MAX_CALLBACK_QUEUE_SIZE 4
struct callback_data *callback_queue[MAX_CALLBACK_QUEUE_SIZE];
static unsigned int callback_queue_size;
static bool callback_queue_done;
static pthread_mutex_t callback_queue_mutex;
static pthread_cond_t callback_queue_callback_event;
static pthread_cond_t callback_queue_ready_event;
static pthread_cond_t callback_queue_complete_event;
void execute_callback( struct callback_data *cb_data )
{
/* No TRACEs or other Wine calls here, this is executed from Unix native thread
* which is not initialized by Wine. */
cb_data->complete = FALSE;
pthread_mutex_lock( &callback_queue_mutex );
while (!callback_queue_done && callback_queue_size == MAX_CALLBACK_QUEUE_SIZE)
pthread_cond_wait( &callback_queue_ready_event, &callback_queue_mutex );
if (callback_queue_done)
{
pthread_mutex_unlock( &callback_queue_mutex );
return;
}
callback_queue[callback_queue_size++] = cb_data;
pthread_cond_broadcast( &callback_queue_callback_event );
while (!callback_queue_done && !cb_data->complete)
pthread_cond_wait( &callback_queue_complete_event, &callback_queue_mutex );
pthread_mutex_unlock( &callback_queue_mutex );
}
static bool get_next_callback( struct callback_data *cb_data, uint64_t *cookie )
{
bool ret;
pthread_mutex_lock( &callback_queue_mutex );
while (!callback_queue_done && !callback_queue_size)
pthread_cond_wait( &callback_queue_callback_event, &callback_queue_mutex );
if ((ret = !callback_queue_done))
{
assert( callback_queue_size );
--callback_queue_size;
*cookie = (uint64_t)( ULONG_PTR)callback_queue[callback_queue_size];
*cb_data = *callback_queue[callback_queue_size];
}
pthread_cond_broadcast( &callback_queue_ready_event );
pthread_mutex_unlock( &callback_queue_mutex );
return ret;
}
static void callback_complete( uint64_t cookie )
{
struct callback_data *cb_data = (struct callback_data *)( ULONG_PTR)cookie;
pthread_mutex_lock( &callback_queue_mutex );
cb_data->complete = TRUE;
pthread_cond_broadcast( &callback_queue_complete_event );
pthread_mutex_unlock( &callback_queue_mutex );
}
static void finish_callback_thread(void)
{
if (!callback_thread_handle) return;
pthread_mutex_lock( &callback_queue_mutex );
callback_queue_done = TRUE;
pthread_cond_broadcast( &callback_queue_callback_event );
pthread_cond_broadcast( &callback_queue_complete_event );
pthread_mutex_unlock( &callback_queue_mutex );
WaitForSingleObject( callback_thread_handle, INFINITE );
CloseHandle( callback_thread_handle );
callback_thread_handle = NULL;
}
typedef void (WINAPI *win_FSteamNetworkingSocketsDebugOutput)( uint32_t nType, const char *pszMsg );
typedef void (CDECL *win_SteamAPIWarningMessageHook_t)( int, const char *pszMsg );
static DWORD WINAPI callback_thread( void *dummy )
{
struct callback_data cb_data;
uint64_t cookie;
while (get_next_callback( &cb_data, &cookie ))
{
switch (cb_data.type)
{
case SOCKET_DEBUG_OUTPUT:
TRACE( "SOCKET_DEBUG_OUTPUT func %p, type %u, msg %s.\n", cb_data.func,
cb_data.sockets_debug_output.type, wine_dbgstr_a( cb_data.sockets_debug_output.msg ) );
((win_FSteamNetworkingSocketsDebugOutput)cb_data.func)( cb_data.sockets_debug_output.type,
cb_data.sockets_debug_output.msg );
callback_complete( cookie );
break;
case STEAM_API_WARNING_HOOK:
TRACE( "STEAM_API_WARNING_HOOK func %p, type %u, msg %s.\n", cb_data.func,
cb_data.steam_api_warning_hook.severity,
wine_dbgstr_a( cb_data.steam_api_warning_hook.msg ) );
((win_SteamAPIWarningMessageHook_t)cb_data.func)( cb_data.steam_api_warning_hook.severity,
cb_data.steam_api_warning_hook.msg );
callback_complete( cookie );
break;
case STEAM_API_CALLBACK_ONE_PARAM:
TRACE( "STEAM_API_CALLBACK_ONE_PARAM func %p, param %p.\n", cb_data.func,
cb_data.steam_api_callback_one_param.param );
((void (WINAPI *)( void * ))cb_data.func)( cb_data.steam_api_callback_one_param.param );
callback_complete( cookie );
break;
default: ERR( "Unexpected callback type %u.\n", cb_data.type ); break;
}
}
TRACE( "exiting.\n" );
return 0;
}
void start_callback_thread(void)
{
DWORD callback_thread_id;
pthread_mutex_init( &callback_queue_mutex, NULL );
pthread_cond_init( &callback_queue_callback_event, NULL );
pthread_cond_init( &callback_queue_ready_event, NULL );
pthread_cond_init( &callback_queue_complete_event, NULL );
callback_thread_handle = CreateThread( NULL, 0, callback_thread, NULL, 0, &callback_thread_id );
TRACE( "Created callback thread 0x%04x.\n", callback_thread_id );
}
void stop_callback_thread(void)
{
if (!callback_thread_handle) return;
/* Unfortunately we don't have a clear place to shutdown the thread so just kill it.
* An explicit sync events and handle cleanup is to protect from unloading and loading .so
* again which may end up not actually reloading anyting and leaving the values of our
* static variables. */
TerminateThread( callback_thread_handle, -1 );
WaitForSingleObject( callback_thread_handle, INFINITE );
pthread_mutex_destroy( &callback_queue_mutex );
CloseHandle( callback_thread_handle );
callback_thread_handle = NULL;
TRACE( "Terminated callback thread.\n" );
}
static bool after_shutdown( bool ret )
{
TRACE( "ret %d.\n", ret );
if (!ret) return 0;
finish_callback_thread();
return ret;
}
static int32_t after_steam_pipe_create( int32_t pipe )
{
DWORD callback_thread_id;
TRACE( "pipe %#x.\n", pipe );
if (!pipe) return 0;
if (callback_thread_handle) return pipe;
callback_queue_done = FALSE;
callback_thread_handle = CreateThread( NULL, 0, callback_thread, NULL, 0, &callback_thread_id );
TRACE( "Created callback thread 0x%04x.\n", callback_thread_id );
return pipe;
}
/* ISteamClient_SteamClient006 */
int32_t __thiscall winISteamClient_SteamClient006_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient006_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient006_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
/* ISteamClient_SteamClient007 */
int32_t __thiscall winISteamClient_SteamClient007_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient007_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient007_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
/* ISteamClient_SteamClient008 */
int32_t __thiscall winISteamClient_SteamClient008_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient008_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient008_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
/* ISteamClient_SteamClient009 */
int32_t __thiscall winISteamClient_SteamClient009_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient009_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient009_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
/* ISteamClient_SteamClient010 */
int32_t __thiscall winISteamClient_SteamClient010_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient010_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient010_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient010_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient010_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient010_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}
/* ISteamClient_SteamClient011 */
int32_t __thiscall winISteamClient_SteamClient011_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient011_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient011_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient011_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient011_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient011_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}
/* ISteamClient_SteamClient012 */
int32_t __thiscall winISteamClient_SteamClient012_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient012_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient012_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient012_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient012_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient012_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}
/* ISteamClient_SteamClient013 */
int32_t __thiscall winISteamClient_SteamClient013_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient013_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient013_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient013_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient013_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient013_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}
/* ISteamClient_SteamClient014 */
int32_t __thiscall winISteamClient_SteamClient014_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient014_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient014_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient014_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient014_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient014_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}
/* ISteamClient_SteamClient015 */
int32_t __thiscall winISteamClient_SteamClient015_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient015_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient015_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient015_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient015_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient015_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}
/* ISteamClient_SteamClient016 */
int32_t __thiscall winISteamClient_SteamClient016_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient016_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient016_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient016_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient016_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient016_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}
/* ISteamClient_SteamClient017 */
int32_t __thiscall winISteamClient_SteamClient017_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient017_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient017_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient017_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient017_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient017_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}
/* ISteamClient_SteamClient018 */
int32_t __thiscall winISteamClient_SteamClient018_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient018_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient018_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient018_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient018_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient018_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}
/* ISteamClient_SteamClient019 */
int32_t __thiscall winISteamClient_SteamClient019_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient019_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient019_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient019_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient019_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient019_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}
/* ISteamClient_SteamClient020 */
int32_t __thiscall winISteamClient_SteamClient020_CreateSteamPipe( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient020_CreateSteamPipe_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient020_CreateSteamPipe( &params );
return after_steam_pipe_create( params._ret );
}
bool __thiscall winISteamClient_SteamClient020_BShutdownIfAllPipesClosed( struct w_steam_iface *_this )
{
struct cppISteamClient_SteamClient020_BShutdownIfAllPipesClosed_params params = {.linux_side = _this->u_iface};
TRACE( "%p\n", _this );
cppISteamClient_SteamClient020_BShutdownIfAllPipesClosed( &params );
return after_shutdown( params._ret );
}

View File

@ -3,7 +3,6 @@
#include <stdio.h>
#include <limits.h>
#include <stdint.h>
#include <pthread.h>
#include <assert.h>
#define __USE_GNU
@ -21,26 +20,12 @@
#include "steamclient_private.h"
#include "wine/list.h"
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
WINE_DEFAULT_DEBUG_CHANNEL(steamclient);
char g_tmppath[PATH_MAX];
static CRITICAL_SECTION steamclient_cs = { NULL, -1, 0, 0, 0, 0 };
static HANDLE steam_overlay_event;
static HANDLE callback_thread_handle;
#define MAX_CALLBACK_QUEUE_SIZE 4
struct callback_data *callback_queue[MAX_CALLBACK_QUEUE_SIZE];
static unsigned int callback_queue_size;
static bool callback_queue_done;
static pthread_mutex_t callback_queue_mutex;
static pthread_cond_t callback_queue_callback_event;
static pthread_cond_t callback_queue_ready_event;
static pthread_cond_t callback_queue_complete_event;
static void * (WINAPI *p_NtCurrentTeb)(void);
@ -86,22 +71,7 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
init_ntdll_so_funcs();
break;
case DLL_PROCESS_DETACH:
if (callback_thread_handle)
{
/* Unfortunately we don't have a clear place to shutdown the thread so just kill it. */
/* An explicit sync events and handle cleanup is to protect from unloading and loading
* .so again which may end up not actually reloading anyting and leaving the values of our static
* variables. */
TerminateThread(callback_thread_handle, -1);
WaitForSingleObject(callback_thread_handle, INFINITE);
pthread_mutex_destroy(&callback_queue_mutex);
pthread_cond_destroy(&callback_queue_callback_event);
pthread_cond_destroy(&callback_queue_ready_event);
pthread_cond_destroy(&callback_queue_complete_event);
CloseHandle(callback_thread_handle);
callback_thread_handle = NULL;
TRACE("Terminated callback thread.\n");
}
stop_callback_thread();
CloseHandle(steam_overlay_event);
break;
}
@ -759,114 +729,6 @@ done:
return ret;
}
void execute_callback(struct callback_data *cb_data)
{
/* No TRACEs or other Wine calls here, this is executed from Unix native thread
* which is not initialized by Wine. */
cb_data->complete = FALSE;
pthread_mutex_lock(&callback_queue_mutex);
while (!callback_queue_done && callback_queue_size == MAX_CALLBACK_QUEUE_SIZE)
pthread_cond_wait(&callback_queue_ready_event, &callback_queue_mutex);
if (callback_queue_done)
{
pthread_mutex_unlock(&callback_queue_mutex);
return;
}
callback_queue[callback_queue_size++] = cb_data;
pthread_cond_broadcast(&callback_queue_callback_event);
while (!callback_queue_done && !cb_data->complete)
pthread_cond_wait(&callback_queue_complete_event, &callback_queue_mutex);
pthread_mutex_unlock(&callback_queue_mutex);
}
static bool get_next_callback( struct callback_data *cb_data, uint64_t *cookie )
{
bool ret;
pthread_mutex_lock(&callback_queue_mutex);
while (!callback_queue_done && !callback_queue_size)
pthread_cond_wait(&callback_queue_callback_event, &callback_queue_mutex);
if ((ret = !callback_queue_done))
{
assert(callback_queue_size);
--callback_queue_size;
*cookie = (uint64_t)(ULONG_PTR)callback_queue[callback_queue_size];
*cb_data = *callback_queue[callback_queue_size];
}
pthread_cond_broadcast(&callback_queue_ready_event);
pthread_mutex_unlock(&callback_queue_mutex);
return ret;
}
static void callback_complete( uint64_t cookie )
{
struct callback_data *cb_data = (struct callback_data *)(ULONG_PTR)cookie;
pthread_mutex_lock(&callback_queue_mutex);
cb_data->complete = TRUE;
pthread_cond_broadcast(&callback_queue_complete_event);
pthread_mutex_unlock(&callback_queue_mutex);
}
static void finish_callback_thread(void)
{
if (!callback_thread_handle)
return;
pthread_mutex_lock(&callback_queue_mutex);
callback_queue_done = TRUE;
pthread_cond_broadcast(&callback_queue_callback_event);
pthread_cond_broadcast(&callback_queue_complete_event);
pthread_mutex_unlock(&callback_queue_mutex);
WaitForSingleObject(callback_thread_handle, INFINITE);
CloseHandle(callback_thread_handle);
callback_thread_handle = NULL;
}
typedef void (WINAPI *win_FSteamNetworkingSocketsDebugOutput)( uint32_t nType, const char *pszMsg );
typedef void (CDECL *win_SteamAPIWarningMessageHook_t)(int, const char *pszMsg);
static DWORD WINAPI callback_thread(void *dummy)
{
struct callback_data cb_data;
uint64_t cookie;
while (get_next_callback( &cb_data, &cookie))
{
switch (cb_data.type)
{
case SOCKET_DEBUG_OUTPUT:
TRACE("SOCKET_DEBUG_OUTPUT func %p, type %u, msg %s.\n",
cb_data.func, cb_data.sockets_debug_output.type,
wine_dbgstr_a(cb_data.sockets_debug_output.msg));
((win_FSteamNetworkingSocketsDebugOutput)cb_data.func)(cb_data.sockets_debug_output.type,
cb_data.sockets_debug_output.msg);
callback_complete(cookie);
break;
case STEAM_API_WARNING_HOOK:
TRACE("STEAM_API_WARNING_HOOK func %p, type %u, msg %s.\n",
cb_data.func, cb_data.steam_api_warning_hook.severity,
wine_dbgstr_a(cb_data.steam_api_warning_hook.msg));
((win_SteamAPIWarningMessageHook_t)cb_data.func)(cb_data.steam_api_warning_hook.severity,
cb_data.steam_api_warning_hook.msg);
callback_complete(cookie);
break;
case STEAM_API_CALLBACK_ONE_PARAM:
TRACE("STEAM_API_CALLBACK_ONE_PARAM func %p, param %p.\n",
cb_data.func, cb_data.steam_api_callback_one_param.param);
((void (WINAPI *)(void *))cb_data.func)(cb_data.steam_api_callback_one_param.param);
callback_complete(cookie);
break;
default:
ERR("Unexpected callback type %u.\n", cb_data.type);
break;
}
}
TRACE("exiting.\n");
return 0;
}
static void *steamclient_lib;
static void *(*steamclient_CreateInterface)(const char *name, int *return_code);
static bool (*steamclient_BGetCallback)( int32_t a, u_CallbackMsg_t *b, int32_t *c );
@ -879,7 +741,6 @@ static void (*steamclient_NotifyMissingInterface)( int32_t hSteamPipe, const cha
static int load_steamclient(void)
{
char path[PATH_MAX], resolved_path[PATH_MAX];
DWORD callback_thread_id;
if(steamclient_lib)
return 1;
@ -952,13 +813,7 @@ static int load_steamclient(void)
return 0;
}
pthread_mutex_init(&callback_queue_mutex, NULL);
pthread_cond_init(&callback_queue_callback_event, NULL);
pthread_cond_init(&callback_queue_ready_event, NULL);
pthread_cond_init(&callback_queue_complete_event, NULL);
callback_thread_handle = CreateThread(NULL, 0, callback_thread, NULL, 0, &callback_thread_id);
TRACE("Created callback thread 0x%04x.\n", callback_thread_id);
start_callback_thread();
return 1;
}
@ -1143,35 +998,6 @@ void CDECL Breakpad_SteamWriteMiniDumpUsingExceptionInfoWithBuildId(int a, int b
TRACE("\n");
}
bool after_shutdown(bool ret)
{
TRACE("ret %d.\n", ret);
if (!ret)
return 0;
finish_callback_thread();
return ret;
}
int32_t after_steam_pipe_create( int32_t pipe )
{
DWORD callback_thread_id;
TRACE("pipe %#x.\n", pipe);
if (!pipe)
return 0;
if (callback_thread_handle)
return pipe;
callback_queue_done = FALSE;
callback_thread_handle = CreateThread(NULL, 0, callback_thread, NULL, 0, &callback_thread_id);
TRACE("Created callback thread 0x%04x.\n", callback_thread_id);
return pipe;
}
bool CDECL Steam_IsKnownInterface( const char *pchVersion )
{
TRACE("%s\n", pchVersion);

View File

@ -51,6 +51,9 @@ void *alloc_vtable(void *vtable, unsigned int method_count, const char *iface_ve
void *alloc_callback_wtou( int id, void *callback, int *callback_len );
void convert_callback_utow( int id, void *u_callback, int u_callback_len, void *w_callback, int w_callback_len );
extern void start_callback_thread(void) DECLSPEC_HIDDEN;
extern void stop_callback_thread(void) DECLSPEC_HIDDEN;
#ifdef __cplusplus
}
#endif

View File

@ -59,9 +59,6 @@ typedef void (W_STDCALL *w_void_SteamAPI_PostAPIResultInProcess_t)(void);
u_void_SteamAPI_PostAPIResultInProcess_t manual_convert_DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess__a( w_void_SteamAPI_PostAPIResultInProcess_t );
u_void_SteamAPI_PostAPIResultInProcess_t manual_convert_DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess__a( w_void_SteamAPI_PostAPIResultInProcess_t );
bool after_shutdown( bool );
int32_t after_steam_pipe_create( int32_t pipe );
#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */

View File

@ -27,17 +27,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient006_GetISteamMatchmakingServe
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient006_RunFrame, 4)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient006_GetIPCCallCount, 4)
int32_t __thiscall winISteamClient_SteamClient006_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient006_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient006_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient006_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient006_BReleaseSteamPipe_params params =
@ -369,17 +358,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient007_GetISteamNetworking, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient007_SetWarningMessageHook, 8)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient007_GetISteamRemoteStorage, 16)
int32_t __thiscall winISteamClient_SteamClient007_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient007_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient007_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient007_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient007_BReleaseSteamPipe_params params =
@ -732,17 +710,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient008_RunFrame, 4)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient008_GetIPCCallCount, 4)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient008_SetWarningMessageHook, 8)
int32_t __thiscall winISteamClient_SteamClient008_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient008_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient008_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient008_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient008_BReleaseSteamPipe_params params =
@ -1081,17 +1048,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient009_RunFrame, 4)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient009_GetIPCCallCount, 4)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient009_SetWarningMessageHook, 8)
int32_t __thiscall winISteamClient_SteamClient009_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient009_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient009_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient009_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient009_BReleaseSteamPipe_params params =
@ -1448,17 +1404,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient010_SetWarningMessageHook, 8)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient010_BShutdownIfAllPipesClosed, 4)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient010_GetISteamHTTP, 16)
int32_t __thiscall winISteamClient_SteamClient010_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient010_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient010_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient010_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient010_BReleaseSteamPipe_params params =
@ -1746,17 +1691,6 @@ void __thiscall winISteamClient_SteamClient010_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient010_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient010_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient010_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient010_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient010_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient010_GetISteamHTTP_params params =
@ -1844,17 +1778,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient011_SetWarningMessageHook, 8)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient011_BShutdownIfAllPipesClosed, 4)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient011_GetISteamHTTP, 16)
int32_t __thiscall winISteamClient_SteamClient011_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient011_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient011_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient011_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient011_BReleaseSteamPipe_params params =
@ -2157,17 +2080,6 @@ void __thiscall winISteamClient_SteamClient011_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient011_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient011_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient011_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient011_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient011_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient011_GetISteamHTTP_params params =
@ -2258,17 +2170,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient012_GetISteamUnifiedMessages,
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient012_GetISteamController, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient012_GetISteamUGC, 16)
int32_t __thiscall winISteamClient_SteamClient012_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient012_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient012_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient012_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient012_BReleaseSteamPipe_params params =
@ -2556,17 +2457,6 @@ void __thiscall winISteamClient_SteamClient012_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient012_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient012_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient012_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient012_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient012_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient012_GetISteamHTTP_params params =
@ -2707,17 +2597,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient013_GetISteamInventory, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient013_GetISteamVideo, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient013_GetISteamAppList, 16)
int32_t __thiscall winISteamClient_SteamClient013_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient013_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient013_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient013_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient013_BReleaseSteamPipe_params params =
@ -3005,17 +2884,6 @@ void __thiscall winISteamClient_SteamClient013_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient013_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient013_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient013_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient013_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient013_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient013_GetISteamHTTP_params params =
@ -3201,17 +3069,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient014_GetISteamUGC, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient014_GetISteamAppList, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient014_GetISteamMusic, 16)
int32_t __thiscall winISteamClient_SteamClient014_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient014_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient014_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient014_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient014_BReleaseSteamPipe_params params =
@ -3499,17 +3356,6 @@ void __thiscall winISteamClient_SteamClient014_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient014_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient014_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient014_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient014_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient014_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient014_GetISteamHTTP_params params =
@ -3682,17 +3528,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient015_GetISteamAppList, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient015_GetISteamMusic, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient015_GetISteamMusicRemote, 16)
int32_t __thiscall winISteamClient_SteamClient015_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient015_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient015_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient015_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient015_BReleaseSteamPipe_params params =
@ -3980,17 +3815,6 @@ void __thiscall winISteamClient_SteamClient015_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient015_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient015_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient015_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient015_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient015_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient015_GetISteamHTTP_params params =
@ -4183,17 +4007,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient016_Set_SteamAPI_CPostAPIResu
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient016_Remove_SteamAPI_CPostAPIResultInProcess, 8)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient016_Set_SteamAPI_CCheckCallbackRegisteredInProcess, 8)
int32_t __thiscall winISteamClient_SteamClient016_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient016_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient016_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient016_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient016_BReleaseSteamPipe_params params =
@ -4481,17 +4294,6 @@ void __thiscall winISteamClient_SteamClient016_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient016_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient016_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient016_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient016_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient016_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient016_GetISteamHTTP_params params =
@ -4739,17 +4541,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient017_GetISteamInventory, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient017_GetISteamVideo, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient017_GetISteamParentalSettings, 16)
int32_t __thiscall winISteamClient_SteamClient017_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient017_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient017_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient017_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient017_BReleaseSteamPipe_params params =
@ -5037,17 +4828,6 @@ void __thiscall winISteamClient_SteamClient017_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient017_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient017_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient017_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient017_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient017_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient017_GetISteamHTTP_params params =
@ -5345,17 +5125,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient018_GetISteamParentalSettings
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient018_GetISteamInput, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient018_GetISteamParties, 16)
int32_t __thiscall winISteamClient_SteamClient018_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient018_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient018_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient018_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient018_BReleaseSteamPipe_params params =
@ -5658,17 +5427,6 @@ void __thiscall winISteamClient_SteamClient018_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient018_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient018_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient018_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient018_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient018_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient018_GetISteamHTTP_params params =
@ -6000,17 +5758,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient019_GetISteamInput, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient019_GetISteamParties, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient019_GetISteamRemotePlay, 16)
int32_t __thiscall winISteamClient_SteamClient019_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient019_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient019_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient019_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient019_BReleaseSteamPipe_params params =
@ -6313,17 +6060,6 @@ void __thiscall winISteamClient_SteamClient019_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient019_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient019_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient019_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient019_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient019_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient019_GetISteamHTTP_params params =
@ -6672,17 +6408,6 @@ DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient020_GetISteamParties, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient020_GetISteamRemotePlay, 16)
DEFINE_THISCALL_WRAPPER(winISteamClient_SteamClient020_DestroyAllInterfaces, 4)
int32_t __thiscall winISteamClient_SteamClient020_CreateSteamPipe(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient020_CreateSteamPipe_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient020_CreateSteamPipe( &params );
return params._ret;
}
bool __thiscall winISteamClient_SteamClient020_BReleaseSteamPipe(struct w_steam_iface *_this, int32_t hSteamPipe)
{
struct cppISteamClient_SteamClient020_BReleaseSteamPipe_params params =
@ -6985,17 +6710,6 @@ void __thiscall winISteamClient_SteamClient020_SetWarningMessageHook(struct w_st
cppISteamClient_SteamClient020_SetWarningMessageHook( &params );
}
bool __thiscall winISteamClient_SteamClient020_BShutdownIfAllPipesClosed(struct w_steam_iface *_this)
{
struct cppISteamClient_SteamClient020_BShutdownIfAllPipesClosed_params params =
{
.linux_side = _this->u_iface,
};
TRACE("%p\n", _this);
cppISteamClient_SteamClient020_BShutdownIfAllPipesClosed( &params );
return params._ret;
}
void /*ISteamHTTP*/ * __thiscall winISteamClient_SteamClient020_GetISteamHTTP(struct w_steam_iface *_this, int32_t hSteamuser, int32_t hSteamPipe, const char *pchVersion)
{
struct cppISteamClient_SteamClient020_GetISteamHTTP_params params =