diff --git a/ChangeLog b/ChangeLog index 492ef213f..74378dba6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ Bug fixes: - #7078 Fix clipboard re-enables automatically - #7077 Fix Ubuntu, CentOS and Debian build after SYNERGY-1161 - #7080 Add trace if the system can't open file with trusted fingerprints +- #7082 Windows client doesn't resume connection after sleep Enhancements: - #7068 Add Synergy restart when settings changed diff --git a/src/lib/client/Client.cpp b/src/lib/client/Client.cpp index 0ca688cf7..2aed5ea4c 100644 --- a/src/lib/client/Client.cpp +++ b/src/lib/client/Client.cpp @@ -767,21 +767,25 @@ Client::handleHello(const Event&, void*) void Client::handleSuspend(const Event&, void*) { - LOG((CLOG_INFO "suspend")); - m_suspended = true; - bool wasConnected = isConnected(); - disconnect(NULL); - m_connectOnResume = wasConnected; + if (!m_suspended) { + LOG((CLOG_INFO "suspend")); + m_suspended = true; + bool wasConnected = isConnected(); + disconnect(NULL); + m_connectOnResume = wasConnected; + } } void Client::handleResume(const Event&, void*) { - LOG((CLOG_INFO "resume")); - m_suspended = false; - if (m_connectOnResume) { - m_connectOnResume = false; - connect(); + if (m_suspended) { + LOG((CLOG_INFO "resume")); + m_suspended = false; + if (m_connectOnResume) { + m_connectOnResume = false; + connect(); + } } } diff --git a/src/lib/platform/MSWindowsScreen.cpp b/src/lib/platform/MSWindowsScreen.cpp index f630c65d5..e616b7925 100644 --- a/src/lib/platform/MSWindowsScreen.cpp +++ b/src/lib/platform/MSWindowsScreen.cpp @@ -1138,6 +1138,14 @@ MSWindowsScreen::onEvent(HWND, UINT msg, case WM_DISPLAYCHANGE: return onDisplayChange(); + /* On windows 10 we don't receive WM_POWERBROADCAST after sleep. + We receive only WM_TIMECHANGE hence this message is used to resume.*/ + case WM_TIMECHANGE: + m_events->addEvent(Event(m_events->forIScreen().resume(), + getEventTarget(), NULL, + Event::kDeliverImmediately)); + break; + case WM_POWERBROADCAST: switch (wParam) { case PBT_APMRESUMEAUTOMATIC: