summaryrefslogtreecommitdiff
path: root/src/screensaver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/screensaver.cpp')
-rw-r--r--src/screensaver.cpp32
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() {