[kde-workspace] monitor sleep settings reset, resulting in monitor turning off (kde#295164)
Rex Dieter
rdieter at fedoraproject.org
Thu Oct 18 19:09:13 UTC 2012
commit fcfa9f6e451357dc811849e37c983bc9e3735ae9
Author: Rex Dieter <rdieter at fedoraproject.org>
Date: Thu Oct 18 14:09:17 2012 -0500
monitor sleep settings reset, resulting in monitor turning off (kde#295164)
kde-workspace-r106793.patch | 47 +++++++++++++++++++++++++++++++++++++++++++
kde-workspace-r106794.patch | 32 +++++++++++++++++++++++++++++
kde-workspace.spec | 11 +++++++++-
3 files changed, 89 insertions(+), 1 deletions(-)
---
diff --git a/kde-workspace-r106793.patch b/kde-workspace-r106793.patch
new file mode 100644
index 0000000..12992c1
--- /dev/null
+++ b/kde-workspace-r106793.patch
@@ -0,0 +1,47 @@
+diff --git a/powerdevil/daemon/actions/dpms/powerdevildpmsaction.cpp b/powerdevil/daemon/actions/dpms/powerdevildpmsaction.cpp
+index a16bf7ee254b9a40c6f033c93e5ca63226469e6e..029d6d3910b7151a889ee79182a9c956e619f99e 100644
+--- a/powerdevil/daemon/actions/dpms/powerdevildpmsaction.cpp
++++ b/powerdevil/daemon/actions/dpms/powerdevildpmsaction.cpp
+@@ -68,6 +68,7 @@ K_EXPORT_PLUGIN(PowerDevilDPMSActionFactory("powerdevildpmsaction"))
+
+ PowerDevilDPMSAction::PowerDevilDPMSAction(QObject* parent, const QVariantList &args)
+ : Action(parent)
++ , m_idleTime(0)
+ , d(new Private)
+ {
+ setRequiredPolicies(PowerDevil::PolicyAgent::ChangeScreenSettings);
+@@ -147,6 +148,9 @@ void PowerDevilDPMSAction::onProfileLoad()
+ XFlush(dpy);
+ XSetErrorHandler(d->defaultHandler);
+
++ // An unloaded action will have m_idleTime = 0:
++ // DPMS enabled with zeroed timeouts is effectively disabled.
++ // So onProfileLoad is always safe
+ DPMSSetTimeouts(dpy, (CARD16)m_idleTime, (CARD16)(m_idleTime * 1.5), (CARD16)(m_idleTime * 2));
+
+ XFlush(dpy);
+@@ -194,6 +198,12 @@ bool PowerDevilDPMSAction::loadAction(const KConfigGroup& config)
+ return true;
+ }
+
++bool PowerDevilDPMSAction::onUnloadAction()
++{
++ m_idleTime = 0;
++ return Action::onUnloadAction();
++}
++
+ void PowerDevilDPMSAction::onUnavailablePoliciesChanged(PowerDevil::PolicyAgent::RequiredPolicies policies)
+ {
+ if (policies & PowerDevil::PolicyAgent::ChangeScreenSettings) {
+diff --git a/powerdevil/daemon/actions/dpms/powerdevildpmsaction.h b/powerdevil/daemon/actions/dpms/powerdevildpmsaction.h
+index ef734c47cef79fbc5573ec3683c30e415bbc8a2e..ad6add8b797eb4ecd59e407bade93862160ef23c 100644
+--- a/powerdevil/daemon/actions/dpms/powerdevildpmsaction.h
++++ b/powerdevil/daemon/actions/dpms/powerdevildpmsaction.h
+@@ -34,6 +34,7 @@ public:
+
+ protected:
+ virtual void onProfileUnload();
++ virtual bool onUnloadAction();
+ virtual void onWakeupFromIdle();
+ virtual void onIdleTimeout(int msec);
+ virtual void onProfileLoad();
diff --git a/kde-workspace-r106794.patch b/kde-workspace-r106794.patch
new file mode 100644
index 0000000..0be393a
--- /dev/null
+++ b/kde-workspace-r106794.patch
@@ -0,0 +1,32 @@
+diff --git a/powerdevil/daemon/actions/dpms/powerdevildpmsaction.cpp b/powerdevil/daemon/actions/dpms/powerdevildpmsaction.cpp
+index a16bf7ee254b9a40c6f033c93e5ca63226469e6e..4b8667da23e6739e5dd00917c3424778fd280f15 100644
+--- a/powerdevil/daemon/actions/dpms/powerdevildpmsaction.cpp
++++ b/powerdevil/daemon/actions/dpms/powerdevildpmsaction.cpp
+@@ -121,6 +121,7 @@ void PowerDevilDPMSAction::onProfileUnload()
+ } else {
+ kDebug() << "Not performing DPMS action due to inhibition";
+ }
++ DPMSSetTimeouts(dpy, 0, 0, 0);
+ }
+
+ void PowerDevilDPMSAction::onWakeupFromIdle()
+@@ -185,6 +186,9 @@ void PowerDevilDPMSAction::triggerImpl(const QVariantMap& args)
+ DPMSForceLevel(dpy, DPMSModeSuspend);
+ }
+ }
++
++ // this leaves DPMS enabled but if it's meant to be disabled
++ // then the timeouts will be zero and so effectively disabled
+ }
+
+ bool PowerDevilDPMSAction::loadAction(const KConfigGroup& config)
+@@ -200,7 +204,8 @@ void PowerDevilDPMSAction::onUnavailablePoliciesChanged(PowerDevil::PolicyAgent:
+ // Inhibition triggered: disable DPMS
+ kDebug() << "Disabling DPMS due to inhibition";
+ Display *dpy = QX11Info::display();
+- DPMSDisable(dpy);
++ DPMSSetTimeouts(dpy, 0, 0, 0);
++ DPMSDisable(dpy); // wakes the screen - do we want this?
+ } else {
+ // Inhibition removed: let's start again
+ onProfileLoad();
diff --git a/kde-workspace.spec b/kde-workspace.spec
index 04665b3..8359b06 100644
--- a/kde-workspace.spec
+++ b/kde-workspace.spec
@@ -11,7 +11,7 @@
Summary: KDE Workspace
Name: kde-workspace
Version: 4.9.2
-Release: 5%{?dist}
+Release: 6%{?dist}
License: GPLv2
URL: https://projects.kde.org/projects/kde/kde-workspace
@@ -120,6 +120,10 @@ Patch59: kde-workspace-4.9.0-fontconfigdir.patch
# Support for switching users with systemd - #859347
Patch60: kde-workspace-4.9.2-systemd-switch-user.patch
+# DPMS timeout reset related fixes, https://bugs.kde.org/295164
+Patch61: kde-workspace-r106793.patch
+Patch62: kde-workspace-r106794.patch
+
## upstream patches
# systemd_inhibit work-in-progress
Patch100: kde-workspace-4.9.2-systemd_inhibit.patch
@@ -459,6 +463,8 @@ Requires: akonadi
%patch58 -p1 -b .systemd-shutdown
%patch59 -p1 -b fontconfigdir
%patch60 -p1 -b .systemd-switch-user
+%patch61 -p1 -b .r106794
+%patch62 -p1 -b .r106794
# upstream patches
%patch100 -p1 -b .systemd_inhibit
@@ -1013,6 +1019,9 @@ fi
%changelog
+* Thu Oct 18 2012 Rex Dieter <rdieter at fedoraproject.org> 4.9.2-6
+- monitor sleep settings reset, resulting in monitor turning off (kde#295164)
+
* Mon Oct 08 2012 Martin Briza <mbriza at redhat.com> 4.9.2-5
- Fixing user switching with SystemD (#859347), for LightDM
More information about the scm-commits
mailing list