lsteamclient: Execute debug callbacks from within Steam_BGetCallback.

CW-Bug-Id: #22729
This commit is contained in:
Rémi Bernon 2023-10-02 15:27:37 +02:00 committed by Arkadiusz Hiler
parent 1b4cd4fc7a
commit 77e83d193a
10 changed files with 422 additions and 463 deletions

View File

@ -5,7 +5,6 @@ EXTRADLLFLAGS = -mcygwin -static-libgcc -static-libstdc++ -ldl
EXTRADEFS = -DWINE_NO_LONG_TYPES -DSTEAM_API_EXPORTS -Dprivate=public -Dprotected=public
SOURCES = \
steam_client_manual.c \
steam_input_manual.c \
steam_networking_manual.c \
steamclient_main.c \
@ -284,4 +283,5 @@ SOURCES = \
unix_steam_input_manual.cpp \
unix_steam_networking_manual.cpp \
unix_steam_utils_manual.cpp \
unixlib.cpp \
unixlib_generated.cpp \

View File

@ -227,8 +227,6 @@ MANUAL_METHODS = {
"ISteamNetworkingFakeUDPPort_DestroyFakeUDPPort": lambda ver, abi: abi == 'w',
"ISteamNetworkingFakeUDPPort_ReceiveMessages": True,
"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,
"ISteamUtils_GetAPICallResult": lambda ver, abi: abi == 'u',

View File

@ -1,426 +0,0 @@
#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;
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

@ -38,7 +38,6 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
steam_overlay_event = CreateEventA(NULL, TRUE, FALSE, "__wine_steamclient_GameOverlayActivated");
break;
case DLL_PROCESS_DETACH:
stop_callback_thread();
CloseHandle(steam_overlay_event);
break;
}
@ -773,8 +772,6 @@ static int load_steamclient(void)
return 0;
}
start_callback_thread();
return 1;
}
@ -788,6 +785,33 @@ void *CDECL CreateInterface(const char *name, int *return_code)
return create_win_interface(name, steamclient_CreateInterface(name, return_code));
}
static void execute_pending_callbacks(void)
{
struct callback *callback = NULL;
uint32_t callback_size = 0;
while (unix_steamclient_next_callback( callback, &callback_size ))
{
if (!callback || callback_size > callback->size)
callback = realloc( callback, callback_size );
else switch (callback->type)
{
case SOCKETS_DEBUG_OUTPUT:
TRACE( "SOCKETS_DEBUG_OUTPUT func %p, type %u, msg %s.\n", callback->sockets_debug_output.pfnFunc,
callback->sockets_debug_output.type, wine_dbgstr_a( callback->sockets_debug_output.msg ) );
callback->sockets_debug_output.pfnFunc( callback->sockets_debug_output.type, callback->sockets_debug_output.msg );
break;
case WARNING_MESSAGE_HOOK:
TRACE( "WARNING_MESSAGE_HOOK func %p, severity %d, msg %s.\n", callback->warning_message_hook.pFunction,
callback->warning_message_hook.severity, wine_dbgstr_a( callback->warning_message_hook.msg ) );
callback->warning_message_hook.pFunction( callback->warning_message_hook.severity, callback->warning_message_hook.msg );
break;
}
}
free( callback );
}
#include "cb_converters.h"
#pragma pack( push, 8 )
@ -812,6 +836,8 @@ bool CDECL Steam_BGetCallback( int32_t pipe, struct winCallbackMsg_t *win_msg, i
if(!load_steamclient())
return 0;
execute_pending_callbacks();
next_event:
ret = steamclient_BGetCallback(pipe, &lin_msg, ignored);
@ -856,6 +882,7 @@ next_event:
last_cb = win_msg->m_pubParam;
}
execute_pending_callbacks();
return ret;
}

View File

@ -311,14 +311,7 @@ static w_FSteamNetworkingSocketsDebugOutput stored_FSteamNetworkingSocketsDebugO
static void lin_FSteamNetworkingSocketsDebugOutput( uint32_t nType, const char *pszMsg )
{
struct callback_data cb_data = { 0 };
/* Only Unix native calls from here (not even TRACE):
* this is native Unix thread which is not initialized by Wine. */
cb_data.type = SOCKET_DEBUG_OUTPUT;
cb_data.func = stored_FSteamNetworkingSocketsDebugOutput;
cb_data.sockets_debug_output.type = nType;
cb_data.sockets_debug_output.msg = pszMsg;
execute_callback(&cb_data);
queue_sockets_debug_output( stored_FSteamNetworkingSocketsDebugOutput, nType, pszMsg );
}
u_FSteamNetworkingSocketsDebugOutput manual_convert_SetDebugOutputFunction_pfnFunc( w_FSteamNetworkingSocketsDebugOutput win_func )
@ -332,14 +325,7 @@ static w_SteamAPIWarningMessageHook_t stored_SteamAPIWarningMessageHook_t;
static void lin_SteamAPIWarningMessageHook_t(int severity, const char *msg)
{
struct callback_data cb_data = { 0 };
/* Only Unix native calls from here (not even TRACE):
* this is native Unix thread which is not initialized by Wine. */
cb_data.type = STEAM_API_WARNING_HOOK;
cb_data.func = stored_SteamAPIWarningMessageHook_t;
cb_data.steam_api_warning_hook.severity = severity;
cb_data.steam_api_warning_hook.msg = msg;
execute_callback(&cb_data);
queue_warning_message_hook( stored_SteamAPIWarningMessageHook_t, severity, msg );
}
u_SteamAPIWarningMessageHook_t manual_convert_SetWarningMessageHook_pFunction( w_SteamAPIWarningMessageHook_t win_func )

View File

@ -56,6 +56,11 @@ u_void_SteamAPI_PostAPIResultInProcess_t manual_convert_DEPRECATED_Remove_SteamA
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 queue_sockets_debug_output( void (*W_STDCALL pfnFunc)( uint32_t, const char * ),
uint32_t type, const char *msg );
extern void queue_warning_message_hook( void (*W_CDECL pFunction)( int32_t, const char * ),
int32_t severity, const char *msg );
#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */

View File

@ -9,6 +9,8 @@
#include "cppISteamUtils_SteamUtils009.hpp"
#include "cppISteamUtils_SteamUtils010.hpp"
WINE_DEFAULT_DEBUG_CHANNEL(steamclient);
/* ISteamUtils_SteamUtils002 */
void cppISteamUtils_SteamUtils002_GetAPICallResult( struct cppISteamUtils_SteamUtils002_GetAPICallResult_params *params )

80
lsteamclient/unixlib.cpp Normal file
View File

@ -0,0 +1,80 @@
#include "unix_private.h"
#include <pthread.h>
#include <stdlib.h>
WINE_DEFAULT_DEBUG_CHANNEL(steamclient);
struct callback_entry
{
struct list entry;
struct callback callback;
};
static struct list callbacks = LIST_INIT( callbacks );
static pthread_mutex_t callbacks_lock = PTHREAD_MUTEX_INITIALIZER;
void queue_sockets_debug_output( void (*W_STDCALL pfnFunc)( uint32_t, const char * ), uint32_t type, const char *msg )
{
uint32_t msg_size = strlen( msg ) + 1, size = msg_size;
struct callback_entry *entry;
size += sizeof(struct callback_entry);
if (!(entry = (struct callback_entry *)malloc( size ))) return;
entry->callback.type = SOCKETS_DEBUG_OUTPUT;
size -= offsetof( struct callback_entry, callback );
entry->callback.size = size;
entry->callback.sockets_debug_output.pfnFunc = pfnFunc;
entry->callback.sockets_debug_output.type = type;
memcpy( (char *)entry->callback.sockets_debug_output.msg, msg, msg_size );
pthread_mutex_lock( &callbacks_lock );
list_add_tail( &callbacks, &entry->entry );
pthread_mutex_unlock( &callbacks_lock );
}
void queue_warning_message_hook( void (*W_CDECL pFunction)( int32_t, const char * ), int32_t severity, const char *msg )
{
uint32_t msg_size = strlen( msg ) + 1, size = msg_size;
struct callback_entry *entry;
size += sizeof(struct callback_entry);
if (!(entry = (struct callback_entry *)malloc( size ))) return;
entry->callback.type = WARNING_MESSAGE_HOOK;
size -= offsetof( struct callback_entry, callback );
entry->callback.size = size;
entry->callback.warning_message_hook.pFunction = pFunction;
entry->callback.warning_message_hook.severity = severity;
memcpy( (char *)entry->callback.warning_message_hook.msg, msg, msg_size );
pthread_mutex_lock( &callbacks_lock );
list_add_tail( &callbacks, &entry->entry );
pthread_mutex_unlock( &callbacks_lock );
}
bool unix_steamclient_next_callback( struct callback *callback, uint32_t *size )
{
struct list *ptr;
pthread_mutex_lock( &callbacks_lock );
if ((ptr = list_head( &callbacks )))
{
struct callback_entry *entry = LIST_ENTRY( ptr, struct callback_entry, entry );
if (entry->callback.size <= *size)
{
memcpy( callback, &entry->callback, entry->callback.size );
list_remove( &entry->entry );
free( entry );
}
*size = entry->callback.size;
}
pthread_mutex_unlock( &callbacks_lock );
return !!ptr;
}

View File

@ -29,37 +29,38 @@ extern void steamclient_free_path_array( const char **path_array );
#define PATH_MAX 4096
extern char g_tmppath[PATH_MAX];
#ifndef STEAM_API_H
enum callback_type
{
SOCKET_DEBUG_OUTPUT = 1,
STEAM_API_WARNING_HOOK,
SOCKETS_DEBUG_OUTPUT = 1,
WARNING_MESSAGE_HOOK,
};
struct callback_data
struct callback
{
enum callback_type type;
void *func;
int complete;
uint32_t size;
union
{
struct
{
unsigned int type;
const char *msg;
}
sockets_debug_output;
void (*W_STDCALL pfnFunc)( uint32_t, const char * );
uint32_t type;
const char msg[1];
} sockets_debug_output;
struct
{
int severity;
const char *msg;
}
steam_api_warning_hook;
void (*W_CDECL pFunction)( int32_t, const char * );
int32_t severity;
const char msg[1];
} warning_message_hook;
};
};
void execute_callback(struct callback_data *cb_data);
extern bool unix_steamclient_next_callback( struct callback *callback, uint32_t *length );
#ifndef STEAM_API_H
struct networking_message_pool;
struct networking_message
{

View File

@ -27,6 +27,17 @@ 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 =
@ -358,6 +369,17 @@ 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 =
@ -710,6 +732,17 @@ 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 =
@ -1048,6 +1081,17 @@ 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 =
@ -1404,6 +1448,17 @@ 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 =
@ -1691,6 +1746,17 @@ 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 =
@ -1778,6 +1844,17 @@ 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 =
@ -2080,6 +2157,17 @@ 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 =
@ -2170,6 +2258,17 @@ 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 =
@ -2457,6 +2556,17 @@ 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 =
@ -2597,6 +2707,17 @@ 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 =
@ -2884,6 +3005,17 @@ 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 =
@ -3069,6 +3201,17 @@ 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 =
@ -3356,6 +3499,17 @@ 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 =
@ -3528,6 +3682,17 @@ 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 =
@ -3815,6 +3980,17 @@ 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 =
@ -4007,6 +4183,17 @@ 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 =
@ -4294,6 +4481,17 @@ 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 =
@ -4541,6 +4739,17 @@ 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 =
@ -4828,6 +5037,17 @@ 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 =
@ -5125,6 +5345,17 @@ 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 =
@ -5427,6 +5658,17 @@ 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 =
@ -5758,6 +6000,17 @@ 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 =
@ -6060,6 +6313,17 @@ 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 =
@ -6408,6 +6672,17 @@ 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 =
@ -6710,6 +6985,17 @@ 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 =