From ebe8bddc31189258c380d6e9d76601b044af9be2 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Sun, 19 Jan 2020 22:48:12 -0800 Subject: [PATCH] fix: ignore (un)lock events for sessions that aren't the current session (#21805) --- .../browser/api/atom_api_power_monitor_win.cc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/shell/browser/api/atom_api_power_monitor_win.cc b/shell/browser/api/atom_api_power_monitor_win.cc index ad85edddc661..15d914bd7eb8 100644 --- a/shell/browser/api/atom_api_power_monitor_win.cc +++ b/shell/browser/api/atom_api_power_monitor_win.cc @@ -58,10 +58,20 @@ LRESULT CALLBACK PowerMonitor::WndProc(HWND hwnd, WPARAM wparam, LPARAM lparam) { if (message == WM_WTSSESSION_CHANGE) { - if (wparam == WTS_SESSION_LOCK) { - Emit("lock-screen"); - } else if (wparam == WTS_SESSION_UNLOCK) { - Emit("unlock-screen"); + bool should_treat_as_current_session = true; + DWORD current_session_id = 0; + if (!::ProcessIdToSessionId(::GetCurrentProcessId(), ¤t_session_id)) { + LOG(ERROR) << "ProcessIdToSessionId failed, assuming current session"; + } else { + should_treat_as_current_session = + (static_cast(lparam) == current_session_id); + } + if (should_treat_as_current_session) { + if (wparam == WTS_SESSION_LOCK) { + Emit("lock-screen"); + } else if (wparam == WTS_SESSION_UNLOCK) { + Emit("unlock-screen"); + } } } return ::DefWindowProc(hwnd, message, wparam, lparam);