Don't create new client instance when unregistering callbacks.

merge-requests/50/head
Mr_Goldberg 2022-08-13 14:37:23 -04:00
parent 0082242a6f
commit a4ef72cb3c
No known key found for this signature in database
GPG Key ID: 8597D87419DEF278
1 changed files with 9 additions and 7 deletions

View File

@ -129,23 +129,23 @@ STEAMAPI_API ISteamClient *g_pSteamClientGameServer;
ISteamClient *g_pSteamClientGameServer;
#endif
static Steam_Client *client;
static Steam_Client *steamclient_instance;
Steam_Client *get_steam_client()
{
std::lock_guard<std::recursive_mutex> lock(global_mutex);
if (!client) {
client = new Steam_Client();
if (!steamclient_instance) {
steamclient_instance = new Steam_Client();
}
return client;
return steamclient_instance;
}
void destroy_client()
{
std::lock_guard<std::recursive_mutex> lock(global_mutex);
if (client) {
delete client;
client = NULL;
if (steamclient_instance) {
delete steamclient_instance;
steamclient_instance = NULL;
}
}
@ -416,6 +416,7 @@ STEAMAPI_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *p
{
PRINT_DEBUG("SteamAPI_UnregisterCallback %p\n", pCallback);
std::lock_guard<std::recursive_mutex> lock(global_mutex);
if (!steamclient_instance) return;
get_steam_client()->UnregisterCallback(pCallback);
}
@ -435,6 +436,7 @@ STEAMAPI_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase
if (!hAPICall)
return;
if (!steamclient_instance) return;
get_steam_client()->UnregisterCallResult(pCallback, hAPICall);
}