Fixed Issue #14: Synergy client on windows will not bring up desktop after screen powersave
This commit is contained in:
parent
ef7d5e4d08
commit
3580a29fd8
|
@ -414,3 +414,26 @@ CArchMiscWindows::dummySetThreadExecutionState(DWORD)
|
||||||
// do nothing
|
// do nothing
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CArchMiscWindows::wakeupDisplay()
|
||||||
|
{
|
||||||
|
// We can't use ::setThreadExecutionState here because it sets
|
||||||
|
// ES_CONTINUOUS, which we don't want.
|
||||||
|
|
||||||
|
if (s_stes == NULL) {
|
||||||
|
HINSTANCE kernel = LoadLibrary("kernel32.dll");
|
||||||
|
if (kernel != NULL) {
|
||||||
|
s_stes = reinterpret_cast<STES_t>(GetProcAddress(kernel,
|
||||||
|
"SetThreadExecutionState"));
|
||||||
|
}
|
||||||
|
if (s_stes == NULL) {
|
||||||
|
s_stes = &CArchMiscWindows::dummySetThreadExecutionState;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s_stes(ES_DISPLAY_REQUIRED);
|
||||||
|
|
||||||
|
// restore the original execution states
|
||||||
|
setThreadExecutionState(s_busyState);
|
||||||
|
}
|
|
@ -161,6 +161,9 @@ public:
|
||||||
//! Enable power saving
|
//! Enable power saving
|
||||||
static void removeBusyState(DWORD busyModes);
|
static void removeBusyState(DWORD busyModes);
|
||||||
|
|
||||||
|
//! Briefly interrupt power saving
|
||||||
|
static void wakeupDisplay();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! Open and return a registry key, closing the parent key
|
//! Open and return a registry key, closing the parent key
|
||||||
static HKEY openKey(HKEY parent, const TCHAR* child, bool create);
|
static HKEY openKey(HKEY parent, const TCHAR* child, bool create);
|
||||||
|
|
|
@ -263,6 +263,16 @@ CMSWindowsScreen::enter()
|
||||||
|
|
||||||
// all messages prior to now are invalid
|
// all messages prior to now are invalid
|
||||||
nextMark();
|
nextMark();
|
||||||
|
} else {
|
||||||
|
// Entering a secondary screen. Ensure that no screensaver is active
|
||||||
|
// and that the screen is not in powersave mode.
|
||||||
|
CArchMiscWindows::wakeupDisplay();
|
||||||
|
|
||||||
|
if(m_screensaver != NULL && m_screensaverActive)
|
||||||
|
{
|
||||||
|
m_screensaver->deactivate();
|
||||||
|
m_screensaverActive = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// now on screen
|
// now on screen
|
||||||
|
|
Loading…
Reference in New Issue