Fix kdesktop_lock interaction with DPMS power save

This partially resolves Bug 1475
pull/2/head
Timothy Pearson 11 years ago
parent 93bbac1431
commit be61b99598

@ -130,6 +130,8 @@ Status DPMSInfo ( Display *, CARD16 *, BOOL * );
#define XF86XK_AudioLowerVolume 0x1008FF11
#define XF86XK_Display 0x1008FF59
#define DPMS_MONITOR_BLANKED(x) ((x == DPMSModeStandby) || (x == DPMSModeSuspend) || (x == DPMSModeOff))
static Window gVRoot = 0;
static Window gVRootData = 0;
static Atom gXA_VROOT;
@ -1436,6 +1438,25 @@ bool LockProcess::startLock()
void LockProcess::closeDialogAndStartHack()
{
#ifdef HAVE_DPMS
if (KDesktopSettings::dpmsDependent()) {
BOOL on;
CARD16 state;
if (DPMSInfo(tqt_xdisplay(), &state, &on)) {
//kdDebug() << "checkDPMSActive " << on << " " << state << endl;
if (DPMS_MONITOR_BLANKED(state)) {
// Make sure saver will attempt to start again after DPMS wakeup
// This is related to Bug 1475
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
// Should not start saver here, because the DPMS check method below would turn it right back off!
// This is related to Bug 1475
return;
}
}
}
#endif
// Close any active dialogs
DISABLE_CONTINUOUS_LOCKDLG_DISPLAY
mSuspended = true;
@ -2218,19 +2239,21 @@ void LockProcess::stayOnTop()
void LockProcess::checkDPMSActive()
{
#ifdef HAVE_DPMS
if (KDesktopSettings::dpmsDependent()) {
BOOL on;
CARD16 state;
DPMSInfo(tqt_xdisplay(), &state, &on);
if (DPMSInfo(tqt_xdisplay(), &state, &on)) {
//kdDebug() << "checkDPMSActive " << on << " " << state << endl;
if (state == DPMSModeStandby || state == DPMSModeSuspend || state == DPMSModeOff)
{
if (DPMS_MONITOR_BLANKED(state)) {
suspend();
} else if ( mSuspended )
{
}
else if (mSuspended) {
if (mResizingDesktopLock == false) {
resume( true );
}
}
}
}
#endif
}

Loading…
Cancel
Save