diff options
author | RĂ©mi Bernon <rbernon@codeweavers.com> | 2020-12-17 20:44:41 +0300 |
---|---|---|
committer | Andrew Eikum <aeikum@codeweavers.com> | 2021-01-11 21:26:56 +0300 |
commit | 186f81ec47a8bef22232eb406a55ff414d0fcc41 (patch) | |
tree | 2e7f6a2cb75ddde21c83a3c1b29704ad1e0d86fc /lsteamclient | |
parent | 38f603d7bf0580ffc9c21b4b09a03cea463ab41d (diff) |
steamclient: Monitor GameOverlayActivated_t callbacks to track overlay presence.
Diffstat (limited to 'lsteamclient')
-rw-r--r-- | lsteamclient/steamclient_main.c | 14 |
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: |