From d79493d6d74031021cbad62825bab1ced62712a2 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Fri, 27 Jan 2017 22:04:11 +0100 Subject: [PATCH] [Steam] Only handle overlay related operations in the client --- src/Steam/Proxy.cpp | 92 ++++++++++++++------------------------------- src/Steam/Proxy.hpp | 4 +- src/Steam/Steam.cpp | 20 ++-------- 3 files changed, 32 insertions(+), 84 deletions(-) diff --git a/src/Steam/Proxy.cpp b/src/Steam/Proxy.cpp index 9b845050..e59b00ed 100644 --- a/src/Steam/Proxy.cpp +++ b/src/Steam/Proxy.cpp @@ -5,17 +5,17 @@ namespace Steam ::Utils::Library Proxy::Client; ::Utils::Library Proxy::Overlay; - ISteamClient008* Proxy::SteamClient; - IClientEngine* Proxy::ClientEngine; - IClientUser* Proxy::ClientUser; + ISteamClient008* Proxy::SteamClient = nullptr; + IClientEngine* Proxy::ClientEngine = nullptr; + IClientUser* Proxy::ClientUser = nullptr; - void* Proxy::SteamPipe; - void* Proxy::SteamUser; + void* Proxy::SteamPipe = nullptr; + void* Proxy::SteamUser = nullptr; - Friends15* Proxy::SteamFriends; - Utils* Proxy::SteamUtils; + Friends15* Proxy::SteamFriends = nullptr; + Utils* Proxy::SteamUtils = nullptr; - uint32_t Proxy::AppId; + uint32_t Proxy::AppId = 0; std::recursive_mutex Proxy::CallMutex; std::vector Proxy::Calls; @@ -29,54 +29,15 @@ namespace Steam { Proxy::AppId = appId; - SetEnvironmentVariableA("SteamAppId", ::Utils::String::VA("%lu", appId)); - SetEnvironmentVariableA("SteamGameId", ::Utils::String::VA("%llu", appId & 0xFFFFFF)); +// if (!Components::Flags::HasFlag("nosteam")) +// { +// SetEnvironmentVariableA("SteamAppId", ::Utils::String::VA("%lu", appId)); +// SetEnvironmentVariableA("SteamGameId", ::Utils::String::VA("%llu", appId & 0xFFFFFF)); +// +// ::Utils::IO::WriteFile("steam_appid.txt", ::Utils::String::VA("%lu", appId), false); +// } - ::Utils::IO::WriteFile("steam_appid.txt", ::Utils::String::VA("%lu", appId), false); - } - - void Proxy::SetMod(std::string mod) - { -#if 0 - if (!Proxy::ClientUser) return; - - GameID_t gameID; - gameID.m_nType = 1; // k_EGameIDTypeGameMod - gameID.m_nAppID = Proxy::AppId & 0xFFFFFF; - gameID.m_nModID = 0x01010101; - - char ourPath[MAX_PATH] = { 0 }; - GetModuleFileNameA(GetModuleHandle(nullptr), ourPath, sizeof(ourPath)); - - char ourDirectory[MAX_PATH] = { 0 }; - GetCurrentDirectoryA(sizeof(ourDirectory), ourDirectory); - - char blob[1] = { 0 }; - std::string cmdline = ::Utils::String::VA("\"%s\" -parentProc %d", ourPath, GetCurrentProcessId()); - Proxy::ClientUser->SpawnProcess(blob, 0, ourPath, cmdline.data(), 0, ourDirectory, gameID, Proxy::AppId, mod.data(), 0); -#endif - } - - void Proxy::RunMod() - { - char* command = "-parentProc "; - char* parentProc = strstr(GetCommandLineA(), command); - - if (parentProc) - { - parentProc += strlen(command); - int pid = atoi(parentProc); - - HANDLE processHandle = OpenProcess(SYNCHRONIZE, FALSE, pid); - - if (processHandle && processHandle != INVALID_HANDLE_VALUE) - { - WaitForSingleObject(processHandle, INFINITE); - CloseHandle(processHandle); - } - - TerminateProcess(GetCurrentProcess(), 0); - } + remove("steam_appid.txt"); } void Proxy::RegisterCall(int32_t callId, uint32_t size, uint64_t call) @@ -142,13 +103,13 @@ namespace Steam } Proxy::CallbackMsg message; - while (Proxy::SteamBGetCallback(Proxy::SteamPipe, &message)) + while (Proxy::SteamBGetCallback && Proxy::SteamFreeLastCallback && Proxy::SteamBGetCallback(Proxy::SteamPipe, &message)) { #ifdef DEBUG - Components::Logger::Print("Steam::Proxy: Callback dispatched: %d\n", message.m_iCallback); + printf("Callback dispatched: %d\n", message.m_iCallback); #endif - Steam::Callbacks::RunCallback(message.m_iCallback, message.m_pubParam); + //Steam::Callbacks::RunCallback(message.m_iCallback, message.m_pubParam); Proxy::RunCallback(message.m_iCallback, message.m_pubParam); Proxy::SteamFreeLastCallback(Proxy::SteamPipe); } @@ -163,7 +124,7 @@ namespace Steam ::Utils::Memory::Allocator allocator; #ifdef DEBUG - Components::Logger::Print("Steam::Proxy: Handling call: %d\n", call.callId); + printf("Handling call: %d\n", call.callId); #endif call.handled = true; @@ -172,7 +133,7 @@ namespace Steam { #ifdef DEBUG auto error = Proxy::SteamUtils->GetAPICallFailureReason(call.call); - Components::Logger::Print("Steam::Proxy: API call failed: %X Handle: %llX\n", error, call.call); + printf("API call failed: %X Handle: %llX\n", error, call.call); #endif continue; } @@ -185,7 +146,7 @@ namespace Steam { #ifdef DEBUG auto error = Proxy::SteamUtils->GetAPICallFailureReason(call.call); - Components::Logger::Print("Steam::Proxy: GetAPICallResult failed: %X Handle: %llX\n", error, call.call); + printf("GetAPICallResult failed: %X Handle: %llX\n", error, call.call); #endif continue; } @@ -198,16 +159,19 @@ namespace Steam Proxy::UnregisterCalls(); } - bool Proxy::Inititalize() + bool Proxy::Inititalize(bool overlayOnly) { std::string directoy = Proxy::GetSteamDirectory(); if (directoy.empty()) return false; SetDllDirectoryA(Proxy::GetSteamDirectory().data()); - Proxy::Client = ::Utils::Library(STEAMCLIENT_LIB, false); Proxy::Overlay = ::Utils::Library(GAMEOVERLAY_LIB, false); - if (!Proxy::Client.valid() || !Proxy::Overlay.valid()) return false; + if (!Proxy::Overlay.valid()) return false; + if (overlayOnly) return true; + + Proxy::Client = ::Utils::Library(STEAMCLIENT_LIB, false); + if (!Proxy::Client.valid()) return false; Proxy::SteamClient = Proxy::Client.get("CreateInterface")("SteamClient008", nullptr); if(!Proxy::SteamClient) return false; diff --git a/src/Steam/Proxy.hpp b/src/Steam/Proxy.hpp index a729e9ce..fe974175 100644 --- a/src/Steam/Proxy.hpp +++ b/src/Steam/Proxy.hpp @@ -334,12 +334,10 @@ namespace Steam class Proxy { public: - static bool Inititalize(); + static bool Inititalize(bool overlayOnly = false); static void Uninititalize(); static void SetGame(uint32_t appId); - static void SetMod(std::string mod); - static void RunMod(); //Overlay related proxies static void SetOverlayNotificationPosition(uint32_t eNotificationPosition); diff --git a/src/Steam/Steam.cpp b/src/Steam/Steam.cpp index bfa450ac..d8e5580a 100644 --- a/src/Steam/Steam.cpp +++ b/src/Steam/Steam.cpp @@ -106,26 +106,12 @@ namespace Steam { bool SteamAPI_Init() { -#ifndef DISABLE_STEAM_GAME - if (!Components::Flags::HasFlag("nosteam")) - { - //Proxy::SetGame(10190); - } -#endif + Proxy::SetGame(10190); - if (!Proxy::Inititalize()) + if (!Proxy::Inititalize(true)) { OutputDebugStringA("Steamproxy not initialized properly"); } - else - { -#ifndef DISABLE_STEAM_GAME - if (!Components::Flags::HasFlag("nosteam")) - { - //Proxy::SetMod("IW4x - Modern Warfare 2"); - } -#endif - } return true; } @@ -143,7 +129,7 @@ namespace Steam void SteamAPI_RunCallbacks() { Callbacks::RunCallbacks(); - Proxy::RunFrame(); + //Proxy::RunFrame(); } void SteamAPI_Shutdown()