From fce62d2dfd640028004cfcccd45a6e461af341e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Sat, 30 Sep 2023 14:10:56 +0200 Subject: [PATCH] lsteamclient: Use manual method wrapper instead of post-exec. CW-Bug-Id: #22729 --- lsteamclient/Makefile.in | 1 + .../cppISteamClient_SteamClient006.cpp | 1 - .../cppISteamClient_SteamClient007.cpp | 1 - .../cppISteamClient_SteamClient008.cpp | 1 - .../cppISteamClient_SteamClient009.cpp | 1 - .../cppISteamClient_SteamClient010.cpp | 2 - .../cppISteamClient_SteamClient011.cpp | 2 - .../cppISteamClient_SteamClient012.cpp | 2 - .../cppISteamClient_SteamClient013.cpp | 2 - .../cppISteamClient_SteamClient014.cpp | 2 - .../cppISteamClient_SteamClient015.cpp | 2 - .../cppISteamClient_SteamClient016.cpp | 2 - .../cppISteamClient_SteamClient017.cpp | 2 - .../cppISteamClient_SteamClient018.cpp | 2 - .../cppISteamClient_SteamClient019.cpp | 2 - .../cppISteamClient_SteamClient020.hpp | 2 - lsteamclient/gen_wrapper.py | 12 +- lsteamclient/steam_client_manual.c | 430 ++++++++++++++++++ lsteamclient/steamclient_main.c | 178 +------- lsteamclient/steamclient_private.h | 3 + lsteamclient/unix_private.h | 3 - lsteamclient/winISteamClient.c | 286 ------------ 22 files changed, 438 insertions(+), 501 deletions(-) create mode 100644 lsteamclient/steam_client_manual.c diff --git a/lsteamclient/Makefile.in b/lsteamclient/Makefile.in index cb37117a..d76d87b7 100644 --- a/lsteamclient/Makefile.in +++ b/lsteamclient/Makefile.in @@ -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 \ diff --git a/lsteamclient/cppISteamClient_SteamClient006.cpp b/lsteamclient/cppISteamClient_SteamClient006.cpp index 3c904485..ad38912d 100644 --- a/lsteamclient/cppISteamClient_SteamClient006.cpp +++ b/lsteamclient/cppISteamClient_SteamClient006.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient007.cpp b/lsteamclient/cppISteamClient_SteamClient007.cpp index db468bd9..d67af491 100644 --- a/lsteamclient/cppISteamClient_SteamClient007.cpp +++ b/lsteamclient/cppISteamClient_SteamClient007.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient008.cpp b/lsteamclient/cppISteamClient_SteamClient008.cpp index 83a83f01..c753614e 100644 --- a/lsteamclient/cppISteamClient_SteamClient008.cpp +++ b/lsteamclient/cppISteamClient_SteamClient008.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient009.cpp b/lsteamclient/cppISteamClient_SteamClient009.cpp index 9bf83351..8f162b55 100644 --- a/lsteamclient/cppISteamClient_SteamClient009.cpp +++ b/lsteamclient/cppISteamClient_SteamClient009.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient010.cpp b/lsteamclient/cppISteamClient_SteamClient010.cpp index 3424bc9a..9f87e3dd 100644 --- a/lsteamclient/cppISteamClient_SteamClient010.cpp +++ b/lsteamclient/cppISteamClient_SteamClient010.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient011.cpp b/lsteamclient/cppISteamClient_SteamClient011.cpp index 501ce083..2aaf76d5 100644 --- a/lsteamclient/cppISteamClient_SteamClient011.cpp +++ b/lsteamclient/cppISteamClient_SteamClient011.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient012.cpp b/lsteamclient/cppISteamClient_SteamClient012.cpp index 6fdf3395..cc2d1e6a 100644 --- a/lsteamclient/cppISteamClient_SteamClient012.cpp +++ b/lsteamclient/cppISteamClient_SteamClient012.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient013.cpp b/lsteamclient/cppISteamClient_SteamClient013.cpp index d96ee70f..ffd0fded 100644 --- a/lsteamclient/cppISteamClient_SteamClient013.cpp +++ b/lsteamclient/cppISteamClient_SteamClient013.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient014.cpp b/lsteamclient/cppISteamClient_SteamClient014.cpp index 5b49f222..47e67544 100644 --- a/lsteamclient/cppISteamClient_SteamClient014.cpp +++ b/lsteamclient/cppISteamClient_SteamClient014.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient015.cpp b/lsteamclient/cppISteamClient_SteamClient015.cpp index 80f41314..4c0e59b6 100644 --- a/lsteamclient/cppISteamClient_SteamClient015.cpp +++ b/lsteamclient/cppISteamClient_SteamClient015.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient016.cpp b/lsteamclient/cppISteamClient_SteamClient016.cpp index 267d5ba6..dba020cd 100644 --- a/lsteamclient/cppISteamClient_SteamClient016.cpp +++ b/lsteamclient/cppISteamClient_SteamClient016.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient017.cpp b/lsteamclient/cppISteamClient_SteamClient017.cpp index 9ce38dc2..d1b4ecea 100644 --- a/lsteamclient/cppISteamClient_SteamClient017.cpp +++ b/lsteamclient/cppISteamClient_SteamClient017.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient018.cpp b/lsteamclient/cppISteamClient_SteamClient018.cpp index c087899f..ad03dca9 100644 --- a/lsteamclient/cppISteamClient_SteamClient018.cpp +++ b/lsteamclient/cppISteamClient_SteamClient018.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient019.cpp b/lsteamclient/cppISteamClient_SteamClient019.cpp index 63af54c6..7d306871 100644 --- a/lsteamclient/cppISteamClient_SteamClient019.cpp +++ b/lsteamclient/cppISteamClient_SteamClient019.cpp @@ -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 ) diff --git a/lsteamclient/cppISteamClient_SteamClient020.hpp b/lsteamclient/cppISteamClient_SteamClient020.hpp index 4088465f..3f6fa7cb 100644 --- a/lsteamclient/cppISteamClient_SteamClient020.hpp +++ b/lsteamclient/cppISteamClient_SteamClient020.hpp @@ -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 ) diff --git a/lsteamclient/gen_wrapper.py b/lsteamclient/gen_wrapper.py index 5b0d002b..44283200 100755 --- a/lsteamclient/gen_wrapper.py +++ b/lsteamclient/gen_wrapper.py @@ -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*(?PSTEAM(?:\w*)_VERSION(?:\w*))\s*"(?P.*)"') @@ -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') diff --git a/lsteamclient/steam_client_manual.c b/lsteamclient/steam_client_manual.c new file mode 100644 index 00000000..1e3dd6ce --- /dev/null +++ b/lsteamclient/steam_client_manual.c @@ -0,0 +1,430 @@ +#include "steamclient_private.h" + +#include +#include + +#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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + 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( ¶ms ); + return after_shutdown( params._ret ); +} diff --git a/lsteamclient/steamclient_main.c b/lsteamclient/steamclient_main.c index cef647ac..8b5e606b 100644 --- a/lsteamclient/steamclient_main.c +++ b/lsteamclient/steamclient_main.c @@ -3,7 +3,6 @@ #include #include #include -#include #include #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); diff --git a/lsteamclient/steamclient_private.h b/lsteamclient/steamclient_private.h index bf422649..21d5871b 100644 --- a/lsteamclient/steamclient_private.h +++ b/lsteamclient/steamclient_private.h @@ -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 diff --git a/lsteamclient/unix_private.h b/lsteamclient/unix_private.h index 14191d1b..18fddef5 100644 --- a/lsteamclient/unix_private.h +++ b/lsteamclient/unix_private.h @@ -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 */ diff --git a/lsteamclient/winISteamClient.c b/lsteamclient/winISteamClient.c index c25c1396..77556578 100644 --- a/lsteamclient/winISteamClient.c +++ b/lsteamclient/winISteamClient.c @@ -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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( ¶ms ); - 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( ¶ms ); } -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( ¶ms ); - 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 =