Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ValveSoftware/Proton.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Bernon <rbernon@codeweavers.com>2020-12-17 20:44:41 +0300
committerAndrew Eikum <aeikum@codeweavers.com>2021-01-11 21:26:56 +0300
commit186f81ec47a8bef22232eb406a55ff414d0fcc41 (patch)
tree2e7f6a2cb75ddde21c83a3c1b29704ad1e0d86fc /lsteamclient
parent38f603d7bf0580ffc9c21b4b09a03cea463ab41d (diff)
steamclient: Monitor GameOverlayActivated_t callbacks to track overlay presence.
Diffstat (limited to 'lsteamclient')
-rw-r--r--lsteamclient/steamclient_main.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/lsteamclient/steamclient_main.c b/lsteamclient/steamclient_main.c
index 9babce07..0ca40aa6 100644
--- a/lsteamclient/steamclient_main.c
+++ b/lsteamclient/steamclient_main.c
@@ -28,6 +28,7 @@ char g_tmppath[PATH_MAX];
static char *controller_glyphs[512]; /* at least k_EControllerActionOrigin_Count */
static CRITICAL_SECTION steamclient_cs = { NULL, -1, 0, 0, 0, 0 };
+static HANDLE steam_overlay_event;
BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
{
@@ -37,6 +38,10 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(instance);
+ steam_overlay_event = CreateEventA(NULL, TRUE, FALSE, "__wine_steamclient_GameOverlayActivated");
+ break;
+ case DLL_PROCESS_DETACH:
+ CloseHandle(steam_overlay_event);
break;
}
@@ -554,6 +559,15 @@ bool CDECL Steam_BGetCallback(HSteamPipe pipe, struct winCallbackMsg_t *win_msg,
BOOL need_free = TRUE;
win_msg->m_hSteamUser = lin_msg.m_hSteamUser;
win_msg->m_iCallback = lin_msg.m_iCallback;
+
+ if (win_msg->m_iCallback == 0x14b) /* GameOverlayActivated_t::k_iCallback */
+ {
+ uint8 activated = *(uint8 *)lin_msg.m_pubParam;
+ TRACE("steam overlay %sactivated, %sabling all X11 events.\n", activated ? "" : "de", activated ? "dis" : "en");
+ if (activated) SetEvent(steam_overlay_event);
+ else ResetEvent(steam_overlay_event);
+ }
+
switch(win_msg->m_iCallback | (lin_msg.m_cubParam << 16)){
#include "cb_converters.dat"
default: