Issue #5041 - properly update activeDesk and activeDeskName when screen saver activates

Ensure that we actually kill the server if we go from screen saver desk to real
desk.
This commit is contained in:
Nye Liu 2015-10-07 21:23:26 -07:00 committed by Xinyu Hou
parent 1fc28392d0
commit 9036d42469
1 changed files with 14 additions and 7 deletions

View File

@ -851,15 +851,22 @@ MSWindowsDesks::checkDesk()
desk = index->second;
}
// if we are told to shut down on desk switch, and this is not the
// if we are told to shut down on desk switch, and this is not the
// first switch, then shut down.
// Issue #5041 workaround - prevent synergys from shutting down when screen
// saver activates - It does not come back cleanly.
if (m_stopOnDeskSwitch && m_activeDesk != NULL && name != m_activeDeskName
&& !m_screensaver->isActive()) {
LOG((CLOG_DEBUG "shutting down because of desk switch to \"%s\"", name.c_str()));
m_events->addEvent(Event(Event::kQuit));
return;
// saver activates - if it is restarted while the screen saver is active,
// the clipboard no longer works.
if (m_stopOnDeskSwitch && m_activeDesk != NULL && name != m_activeDeskName) {
if (!m_screensaver->isActive()) {
LOG((CLOG_DEBUG "shutting down because of desk switch \"%s\"->\"%s\"",
m_activeDeskName.c_str(), name.c_str()));
m_events->addEvent(Event(Event::kQuit));
return;
}
LOG((CLOG_DEBUG "screen saver active, ignoring desk switch \"%s\"->\"%s\"",
m_activeDeskName.c_str(), name.c_str()));
m_activeDesk = desk;
m_activeDeskName = name;
}
// if active desktop changed then tell the old and new desk threads