[PATCH xserver] : bug 106963 : change the DPMS initialization to be conditional on not set from config

John Lumby johnlumby at hotmail.com
Tue Jun 19 19:29:04 UTC 2018


Any DPMS timeout values set in ServerFlags section of the xorg.conf are being overwritten
 by DPMS extension initialization. 
Therefore change the DPMS initialization of timeout values to be conditional on not set from config.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106963

diff --git a/xorg/xserver/Xext/dpms.c.orig b/xorg/xserver/Xext/dpms.c
index efa7154..e43a379 100644
--- a/xorg/xserver/Xext/dpms.c.orig
+++ b/xorg/xserver/Xext/dpms.c
@@ -45,9 +45,9 @@ Equipment Corporation.
 
 CARD16 DPMSPowerLevel = 0;
 Bool DPMSDisabledSwitch = FALSE;
-CARD32 DPMSStandbyTime;
-CARD32 DPMSSuspendTime;
-CARD32 DPMSOffTime;
+CARD32 DPMSStandbyTime = -1;
+CARD32 DPMSSuspendTime = -1;
+CARD32 DPMSOffTime = -1;
 Bool DPMSEnabled;
 
 Bool
@@ -432,7 +432,15 @@ DPMSCloseDownExtension(ExtensionEntry *e)
 void
 DPMSExtensionInit(void)
 {
-    DPMSStandbyTime = DPMSSuspendTime = DPMSOffTime = ScreenSaverTime;
+#define CONDITIONALLY_SET_DPMS_TIMEOUT(_timeout_value_)         \
+    if (_timeout_value_ == -1) { /* not yet set from config */  \
+        _timeout_value_ = ScreenSaverTime;                      \
+    }
+
+    CONDITIONALLY_SET_DPMS_TIMEOUT(DPMSStandbyTime)
+    CONDITIONALLY_SET_DPMS_TIMEOUT(DPMSSuspendTime)
+    CONDITIONALLY_SET_DPMS_TIMEOUT(DPMSOffTime)
+
     DPMSPowerLevel = DPMSModeOn;
     DPMSEnabled = DPMSSupported();
 


More information about the xorg-devel mailing list