diff --git a/Xext/dpms.c b/Xext/dpms.c index abc67ef1f..efa715428 100644 --- a/Xext/dpms.c +++ b/Xext/dpms.c @@ -43,6 +43,13 @@ Equipment Corporation. #include "scrnintstr.h" #include "windowstr.h" +CARD16 DPMSPowerLevel = 0; +Bool DPMSDisabledSwitch = FALSE; +CARD32 DPMSStandbyTime; +CARD32 DPMSSuspendTime; +CARD32 DPMSOffTime; +Bool DPMSEnabled; + Bool DPMSSupported(void) { @@ -136,7 +143,7 @@ ProcDPMSCapable(ClientPtr client) .type = X_Reply, .sequenceNumber = client->sequence, .length = 0, - .capable = DPMSCapableFlag + .capable = TRUE }; REQUEST_SIZE_MATCH(xDPMSCapableReq); @@ -204,11 +211,9 @@ ProcDPMSEnable(ClientPtr client) REQUEST_SIZE_MATCH(xDPMSEnableReq); - if (DPMSCapableFlag) { - DPMSEnabled = TRUE; - if (!was_enabled) - SetScreenSaverTimer(); - } + DPMSEnabled = TRUE; + if (!was_enabled) + SetScreenSaverTimer(); return Success; } @@ -427,7 +432,12 @@ DPMSCloseDownExtension(ExtensionEntry *e) void DPMSExtensionInit(void) { - AddExtension(DPMSExtensionName, 0, 0, - ProcDPMSDispatch, SProcDPMSDispatch, - DPMSCloseDownExtension, StandardMinorOpcode); + DPMSStandbyTime = DPMSSuspendTime = DPMSOffTime = ScreenSaverTime; + DPMSPowerLevel = DPMSModeOn; + DPMSEnabled = DPMSSupported(); + + if (DPMSEnabled) + AddExtension(DPMSExtensionName, 0, 0, + ProcDPMSDispatch, SProcDPMSDispatch, + DPMSCloseDownExtension, StandardMinorOpcode); } diff --git a/Xext/dpmsproc.h b/Xext/dpmsproc.h index 82dccbd67..1e24f1f55 100644 --- a/Xext/dpmsproc.h +++ b/Xext/dpmsproc.h @@ -9,7 +9,14 @@ #include "dixstruct.h" -int _X_EXPORT DPMSSet(ClientPtr client, int level); -Bool _X_EXPORT DPMSSupported(void); +extern int DPMSSet(ClientPtr client, int level); +extern Bool DPMSSupported(void); + +extern CARD32 DPMSStandbyTime; +extern CARD32 DPMSSuspendTime; +extern CARD32 DPMSOffTime; +extern CARD16 DPMSPowerLevel; +extern Bool DPMSEnabled; +extern Bool DPMSDisabledSwitch; #endif diff --git a/Xext/saver.c b/Xext/saver.c index bf3a23d9a..09497610a 100644 --- a/Xext/saver.c +++ b/Xext/saver.c @@ -53,6 +53,7 @@ in this Software without prior written authorization from the X Consortium. #endif #ifdef DPMSExtension #include +#include "dpmsproc.h" #endif #include "protocol-versions.h" diff --git a/dix/globals.c b/dix/globals.c index f36a938f7..acd5c4412 100644 --- a/dix/globals.c +++ b/dix/globals.c @@ -93,16 +93,6 @@ CARD32 ScreenSaverInterval; int ScreenSaverBlanking; int ScreenSaverAllowExposures; -#ifdef DPMSExtension -CARD16 DPMSPowerLevel = 0; -Bool DPMSDisabledSwitch = FALSE; -Bool DPMSCapableFlag = FALSE; -CARD32 DPMSStandbyTime; -CARD32 DPMSSuspendTime; -CARD32 DPMSOffTime; -Bool DPMSEnabled; -#endif - CARD32 defaultScreenSaverTime = DEFAULT_SCREEN_SAVER_TIME; CARD32 defaultScreenSaverInterval = DEFAULT_SCREEN_SAVER_INTERVAL; int defaultScreenSaverBlanking = DEFAULT_SCREEN_SAVER_BLANKING; diff --git a/dix/main.c b/dix/main.c index 4947062a5..f98643aa5 100644 --- a/dix/main.c +++ b/dix/main.c @@ -148,11 +148,7 @@ dix_main(int argc, char *argv[], char *envp[]) ScreenSaverInterval = defaultScreenSaverInterval; ScreenSaverBlanking = defaultScreenSaverBlanking; ScreenSaverAllowExposures = defaultScreenSaverAllowExposures; -#ifdef DPMSExtension - DPMSStandbyTime = DPMSSuspendTime = DPMSOffTime = ScreenSaverTime; - DPMSEnabled = TRUE; - DPMSPowerLevel = 0; -#endif + InitBlockAndWakeupHandlers(); /* Perform any operating system dependent initializations you'd like */ OsInit(); @@ -239,13 +235,6 @@ dix_main(int argc, char *argv[], char *envp[]) defaultCursorFont); } -#ifdef DPMSExtension - /* check all screens, looking for DPMS Capabilities */ - DPMSCapableFlag = DPMSSupported(); - if (!DPMSCapableFlag) - DPMSEnabled = FALSE; -#endif - #ifdef PANORAMIX /* * Consolidate window and colourmap information for each screen diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index 49b898da1..c2b522a18 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -64,8 +64,10 @@ #include "loaderProcs.h" #include "xkbsrv.h" - #include "picture.h" +#ifdef DPMSExtension +#include "dpmsproc.h" +#endif /* * These paths define the way the config file search is done. The escape diff --git a/include/globals.h b/include/globals.h index 693bdf4f2..44314f03f 100644 --- a/include/globals.h +++ b/include/globals.h @@ -26,16 +26,6 @@ extern _X_EXPORT char *SeatId; extern _X_EXPORT char *ConnectionInfo; extern _X_EXPORT sig_atomic_t inSignalContext; -#ifdef DPMSExtension -extern _X_EXPORT CARD32 DPMSStandbyTime; -extern _X_EXPORT CARD32 DPMSSuspendTime; -extern _X_EXPORT CARD32 DPMSOffTime; -extern _X_EXPORT CARD16 DPMSPowerLevel; -extern _X_EXPORT Bool DPMSEnabled; -extern _X_EXPORT Bool DPMSDisabledSwitch; -extern _X_EXPORT Bool DPMSCapableFlag; -#endif - #ifdef PANORAMIX extern _X_EXPORT Bool PanoramiXExtensionDisabledHack; #endif diff --git a/os/utils.c b/os/utils.c index ac55cd79f..3f8bac5c6 100644 --- a/os/utils.c +++ b/os/utils.c @@ -135,6 +135,7 @@ Bool noDamageExtension = FALSE; Bool noDbeExtension = FALSE; #endif #ifdef DPMSExtension +#include "dpmsproc.h" Bool noDPMSExtension = FALSE; #endif #ifdef GLXEXT