From 893f566375312b1ad7f552cf8675bf68da1d0c24 Mon Sep 17 00:00:00 2001 From: otavepto Date: Sat, 20 Apr 2024 01:13:10 +0200 Subject: [PATCH] workaround to make Steam Input work, not guaranteed --- dll/dll/settings.h | 3 +++ dll/steam_client.cpp | 12 ++++++++++-- tools/steamclient_loader/linux/steamclient_loader.sh | 2 +- tools/steamclient_loader/win/ColdClientLoader.cpp | 3 ++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/dll/dll/settings.h b/dll/dll/settings.h index a64ea4c6..134b1e18 100644 --- a/dll/dll/settings.h +++ b/dll/dll/settings.h @@ -224,6 +224,9 @@ public: bool disable_account_avatar = false; + // setting this env var conflicts with Steam Input + bool disable_steamoverlaygameid_env_var = false; + std::map images{}; //subscribed lobby/group ids diff --git a/dll/steam_client.cpp b/dll/steam_client.cpp index 1c6aa746..16756313 100644 --- a/dll/steam_client.cpp +++ b/dll/steam_client.cpp @@ -83,7 +83,10 @@ Steam_Client::Steam_Client() auto appid_str = std::to_string(appid); set_env_variable("SteamAppId", appid_str); set_env_variable("SteamGameId", appid_str); - set_env_variable("SteamOverlayGameId", appid_str); + + if (!settings_client->disable_steamoverlaygameid_env_var) { + set_env_variable("SteamOverlayGameId", appid_str); + } } { @@ -170,6 +173,8 @@ Steam_Client::Steam_Client() last_cb_run = 0; PRINT_DEBUG("end *********"); + + reset_LastError(); } Steam_Client::~Steam_Client() @@ -272,7 +277,10 @@ void Steam_Client::setAppID(uint32 appid) network->setAppID(appid); set_env_variable("SteamAppId", std::to_string(appid)); set_env_variable("SteamGameId", std::to_string(appid)); - set_env_variable("SteamOverlayGameId", std::to_string(appid)); + + if (!settings_client->disable_steamoverlaygameid_env_var) { + set_env_variable("SteamOverlayGameId", std::to_string(appid)); + } } diff --git a/tools/steamclient_loader/linux/steamclient_loader.sh b/tools/steamclient_loader/linux/steamclient_loader.sh index 6a0c0a68..657a7e5e 100644 --- a/tools/steamclient_loader/linux/steamclient_loader.sh +++ b/tools/steamclient_loader/linux/steamclient_loader.sh @@ -214,7 +214,7 @@ if [ ! -z "${STEAM_RUNTIME}" ]; then ) fi -GseAppPath="${EXE_RUN_DIR}" SteamAppId=$APP_ID SteamGameId=$APP_ID SteamOverlayGameId=$APP_ID SteamAppUser='client_player' SteamUser='client_player' SteamClientLaunch='1' SteamEnv='1' SteamPath="$script_dir" "$TARGET_EXE" "${EXE_COMMAND_LINE[@]}" +GseAppPath="${EXE_RUN_DIR}" SteamAppId=$APP_ID SteamGameId=$APP_ID SteamAppUser='client_player' SteamUser='client_player' SteamClientLaunch='1' SteamEnv='1' SteamPath="$script_dir" "$TARGET_EXE" "${EXE_COMMAND_LINE[@]}" popd diff --git a/tools/steamclient_loader/win/ColdClientLoader.cpp b/tools/steamclient_loader/win/ColdClientLoader.cpp index 72bab18a..0f93d637 100644 --- a/tools/steamclient_loader/win/ColdClientLoader.cpp +++ b/tools/steamclient_loader/win/ColdClientLoader.cpp @@ -322,7 +322,8 @@ void set_steam_env_vars(const std::wstring &AppId) { SetEnvironmentVariableW(L"SteamAppId", AppId.c_str()); SetEnvironmentVariableW(L"SteamGameId", AppId.c_str()); - SetEnvironmentVariableW(L"SteamOverlayGameId", AppId.c_str()); + // this env var conflicts with Steam Input + // SetEnvironmentVariableW(L"SteamOverlayGameId", AppId.c_str()); // these 2 wil be overridden by the emu SetEnvironmentVariableW(L"SteamAppUser", L"cold_player");