diff options
Diffstat (limited to 'src/screensaver.cpp')
-rw-r--r-- | src/screensaver.cpp | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/src/screensaver.cpp b/src/screensaver.cpp index 919d1d4..6cea175 100644 --- a/src/screensaver.cpp +++ b/src/screensaver.cpp @@ -1,5 +1,5 @@ /* smplayer, GUI front-end for mplayer. - Copyright (C) 2006-2009 Ricardo Villalba <rvm@escomposlinux.org> + Copyright (C) 2006-2010 Ricardo Villalba <rvm@escomposlinux.org> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,11 +18,13 @@ #include "screensaver.h" #include <Qt> +#include <QSysInfo> #include <windows.h> WinScreenSaver::WinScreenSaver() { lowpower = poweroff = screensaver = 0; state_saved = false; + modified = false; retrieveState(); } @@ -35,8 +37,11 @@ void WinScreenSaver::retrieveState() { qDebug("WinScreenSaver::retrieveState"); if (!state_saved) { - SystemParametersInfo(SPI_GETLOWPOWERTIMEOUT, 0, &lowpower, 0); - SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT, 0, &poweroff, 0); + if (QSysInfo::WindowsVersion < QSysInfo::WV_VISTA) { + // Not supported on Windows Vista + SystemParametersInfo(SPI_GETLOWPOWERTIMEOUT, 0, &lowpower, 0); + SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT, 0, &poweroff, 0); + } SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, &screensaver, 0); state_saved = true; @@ -47,9 +52,17 @@ void WinScreenSaver::retrieveState() { } void WinScreenSaver::restoreState() { + if (!modified) { + qDebug("WinScreenSaver::restoreState: state did not change, doing nothing"); + return; + } + if (state_saved) { - SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT, lowpower, NULL, 0); - SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, poweroff, NULL, 0); + if (QSysInfo::WindowsVersion < QSysInfo::WV_VISTA) { + // Not supported on Windows Vista + SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT, lowpower, NULL, 0); + SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, poweroff, NULL, 0); + } SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, screensaver, NULL, 0); qDebug("WinScreenSaver::restoreState: lowpower: %d, poweroff: %d, screensaver: %d", lowpower, poweroff, screensaver); @@ -61,9 +74,14 @@ void WinScreenSaver::restoreState() { void WinScreenSaver::disable() { qDebug("WinScreenSaver::disable"); - SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT, 0, NULL, 0); - SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, 0, NULL, 0); + if (QSysInfo::WindowsVersion < QSysInfo::WV_VISTA) { + // Not supported on Windows Vista + SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT, 0, NULL, 0); + SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, 0, NULL, 0); + } SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, 0, NULL, 0); + + modified = true; } void WinScreenSaver::enable() { |