dix: Lift DPMS to a screen hook
Following on from the previous change, this adds a DPMS hook to the ScreenRec and uses that to infer DPMS support. As a result we can drop the dpms stub code from Xext. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
8ed0b00fce
commit
7f1ef9289d
|
@ -1,4 +1,4 @@
|
||||||
noinst_LTLIBRARIES = libXext.la libXextdpmsstubs.la libXvidmode.la
|
noinst_LTLIBRARIES = libXext.la libXvidmode.la
|
||||||
|
|
||||||
AM_CFLAGS = $(DIX_CFLAGS)
|
AM_CFLAGS = $(DIX_CFLAGS)
|
||||||
|
|
||||||
|
@ -96,8 +96,6 @@ endif
|
||||||
libXext_la_SOURCES = $(BUILTIN_SRCS)
|
libXext_la_SOURCES = $(BUILTIN_SRCS)
|
||||||
libXext_la_LIBADD = $(BUILTIN_LIBS)
|
libXext_la_LIBADD = $(BUILTIN_LIBS)
|
||||||
|
|
||||||
libXextdpmsstubs_la_SOURCES = dpmsstubs.c
|
|
||||||
|
|
||||||
# XVidMode extension
|
# XVidMode extension
|
||||||
libXvidmode_la_SOURCES = vidmode.c
|
libXvidmode_la_SOURCES = vidmode.c
|
||||||
|
|
||||||
|
|
64
Xext/dpms.c
64
Xext/dpms.c
|
@ -40,6 +40,70 @@ Equipment Corporation.
|
||||||
#include <X11/extensions/dpmsproto.h>
|
#include <X11/extensions/dpmsproto.h>
|
||||||
#include "dpmsproc.h"
|
#include "dpmsproc.h"
|
||||||
#include "extinit.h"
|
#include "extinit.h"
|
||||||
|
#include "scrnintstr.h"
|
||||||
|
#include "windowstr.h"
|
||||||
|
|
||||||
|
Bool
|
||||||
|
DPMSSupported(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* For each screen, check if DPMS is supported */
|
||||||
|
for (i = 0; i < screenInfo.numScreens; i++)
|
||||||
|
if (screenInfo.screens[i]->DPMS != NULL)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
for (i = 0; i < screenInfo.numGPUScreens; i++)
|
||||||
|
if (screenInfo.gpuscreens[i]->DPMS != NULL)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
isUnblank(int mode)
|
||||||
|
{
|
||||||
|
switch (mode) {
|
||||||
|
case SCREEN_SAVER_OFF:
|
||||||
|
case SCREEN_SAVER_FORCER:
|
||||||
|
return TRUE;
|
||||||
|
case SCREEN_SAVER_ON:
|
||||||
|
case SCREEN_SAVER_CYCLE:
|
||||||
|
return FALSE;
|
||||||
|
default:
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
DPMSSet(ClientPtr client, int level)
|
||||||
|
{
|
||||||
|
int rc, i;
|
||||||
|
|
||||||
|
DPMSPowerLevel = level;
|
||||||
|
|
||||||
|
if (level != DPMSModeOn) {
|
||||||
|
if (isUnblank(screenIsSaved)) {
|
||||||
|
rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverActive);
|
||||||
|
if (rc != Success)
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
} else if (!isUnblank(screenIsSaved)) {
|
||||||
|
rc = dixSaveScreens(client, SCREEN_SAVER_OFF, ScreenSaverReset);
|
||||||
|
if (rc != Success)
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < screenInfo.numScreens; i++)
|
||||||
|
if (screenInfo.screens[i]->DPMS != NULL)
|
||||||
|
screenInfo.screens[i]->DPMS(screenInfo.screens[i], level);
|
||||||
|
|
||||||
|
for (i = 0; i < screenInfo.numGPUScreens; i++)
|
||||||
|
if (screenInfo.gpuscreens[i]->DPMS != NULL)
|
||||||
|
screenInfo.gpuscreens[i]->DPMS(screenInfo.gpuscreens[i], level);
|
||||||
|
|
||||||
|
return Success;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ProcDPMSGetVersion(ClientPtr client)
|
ProcDPMSGetVersion(ClientPtr client)
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
/*****************************************************************
|
|
||||||
|
|
||||||
Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software.
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
|
|
||||||
BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
|
||||||
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
Except as contained in this notice, the name of Digital Equipment Corporation
|
|
||||||
shall not be used in advertising or otherwise to promote the sale, use or other
|
|
||||||
dealings in this Software without prior written authorization from Digital
|
|
||||||
Equipment Corporation.
|
|
||||||
|
|
||||||
******************************************************************/
|
|
||||||
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
|
||||||
#include <dix-config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "dpmsproc.h"
|
|
||||||
|
|
||||||
#define FALSE 0
|
|
||||||
|
|
||||||
Bool
|
|
||||||
DPMSSupported(void)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
DPMSSet(ClientPtr client, int level)
|
|
||||||
{
|
|
||||||
return Success;
|
|
||||||
}
|
|
|
@ -53,10 +53,7 @@
|
||||||
#include "windowstr.h" /* For screenIsSaved */
|
#include "windowstr.h" /* For screenIsSaved */
|
||||||
#include <X11/extensions/dpms.h>
|
#include <X11/extensions/dpms.h>
|
||||||
|
|
||||||
static unsigned long dpmsGeneration = 0;
|
static int
|
||||||
static Bool dpmsSupported = TRUE;
|
|
||||||
|
|
||||||
static void
|
|
||||||
_dmxDPMSInit(DMXScreenInfo * dmxScreen)
|
_dmxDPMSInit(DMXScreenInfo * dmxScreen)
|
||||||
{
|
{
|
||||||
int event_base, error_base;
|
int event_base, error_base;
|
||||||
|
@ -65,14 +62,9 @@ _dmxDPMSInit(DMXScreenInfo * dmxScreen)
|
||||||
BOOL state;
|
BOOL state;
|
||||||
const char *monitor;
|
const char *monitor;
|
||||||
|
|
||||||
if (dpmsGeneration != serverGeneration) {
|
|
||||||
dpmsSupported = TRUE; /* On unless a backend doesn't support it */
|
|
||||||
dpmsGeneration = serverGeneration;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef DPMSExtension
|
#ifdef DPMSExtension
|
||||||
if (DPMSDisabledSwitch)
|
if (DPMSDisabledSwitch)
|
||||||
dpmsSupported = FALSE; /* -dpms turns off */
|
return FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dmxScreen->dpmsCapable = 0;
|
dmxScreen->dpmsCapable = 0;
|
||||||
|
@ -80,25 +72,21 @@ _dmxDPMSInit(DMXScreenInfo * dmxScreen)
|
||||||
if (!dmxScreen->beDisplay) {
|
if (!dmxScreen->beDisplay) {
|
||||||
dmxLogOutput(dmxScreen,
|
dmxLogOutput(dmxScreen,
|
||||||
"Cannot determine if DPMS supported (detached screen)\n");
|
"Cannot determine if DPMS supported (detached screen)\n");
|
||||||
dpmsSupported = FALSE;
|
return FALSE;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!DPMSQueryExtension(dmxScreen->beDisplay, &event_base, &error_base)) {
|
if (!DPMSQueryExtension(dmxScreen->beDisplay, &event_base, &error_base)) {
|
||||||
dmxLogOutput(dmxScreen, "DPMS not supported\n");
|
dmxLogOutput(dmxScreen, "DPMS not supported\n");
|
||||||
dpmsSupported = FALSE;
|
return FALSE;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (!DPMSGetVersion(dmxScreen->beDisplay, &major, &minor)) {
|
if (!DPMSGetVersion(dmxScreen->beDisplay, &major, &minor)) {
|
||||||
dmxLogOutput(dmxScreen, "DPMS not supported\n");
|
dmxLogOutput(dmxScreen, "DPMS not supported\n");
|
||||||
dpmsSupported = FALSE;
|
return FALSE;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (!DPMSCapable(dmxScreen->beDisplay)) {
|
if (!DPMSCapable(dmxScreen->beDisplay)) {
|
||||||
dmxLogOutput(dmxScreen, "DPMS %d.%d (not DPMS capable)\n",
|
dmxLogOutput(dmxScreen, "DPMS %d.%d (not DPMS capable)\n",
|
||||||
major, minor);
|
major, minor);
|
||||||
dpmsSupported = FALSE;
|
return FALSE;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DPMSInfo(dmxScreen->beDisplay, &level, &state);
|
DPMSInfo(dmxScreen->beDisplay, &level, &state);
|
||||||
|
@ -134,20 +122,22 @@ _dmxDPMSInit(DMXScreenInfo * dmxScreen)
|
||||||
"DPMS %d.%d (%s, %s, %d %d %d)\n",
|
"DPMS %d.%d (%s, %s, %d %d %d)\n",
|
||||||
major, minor, monitor, state ? "enabled" : "disabled",
|
major, minor, monitor, state ? "enabled" : "disabled",
|
||||||
standby, suspend, off);
|
standby, suspend, off);
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Initialize DPMS support. We save the current settings and turn off
|
/** Initialize DPMS support. We save the current settings and turn off
|
||||||
* DPMS. The settings are restored in #dmxDPMSTerm. */
|
* DPMS. The settings are restored in #dmxDPMSTerm. */
|
||||||
void
|
int
|
||||||
dmxDPMSInit(DMXScreenInfo * dmxScreen)
|
dmxDPMSInit(DMXScreenInfo * dmxScreen)
|
||||||
{
|
{
|
||||||
int interval, preferBlanking, allowExposures;
|
int interval, preferBlanking, allowExposures;
|
||||||
|
|
||||||
/* Turn off DPMS */
|
/* Turn off DPMS */
|
||||||
_dmxDPMSInit(dmxScreen);
|
if (!_dmxDPMSInit(dmxScreen))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (!dmxScreen->beDisplay)
|
if (!dmxScreen->beDisplay)
|
||||||
return;
|
return FALSE;
|
||||||
|
|
||||||
/* Turn off screen saver */
|
/* Turn off screen saver */
|
||||||
XGetScreenSaver(dmxScreen->beDisplay, &dmxScreen->savedTimeout, &interval,
|
XGetScreenSaver(dmxScreen->beDisplay, &dmxScreen->savedTimeout, &interval,
|
||||||
|
@ -156,6 +146,7 @@ dmxDPMSInit(DMXScreenInfo * dmxScreen)
|
||||||
preferBlanking, allowExposures);
|
preferBlanking, allowExposures);
|
||||||
XResetScreenSaver(dmxScreen->beDisplay);
|
XResetScreenSaver(dmxScreen->beDisplay);
|
||||||
dmxSync(dmxScreen, FALSE);
|
dmxSync(dmxScreen, FALSE);
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Terminate DPMS support on \a dmxScreen. We restore the settings
|
/** Terminate DPMS support on \a dmxScreen. We restore the settings
|
||||||
|
@ -199,38 +190,12 @@ dmxDPMSWakeup(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DPMSExtension
|
#ifdef DPMSExtension
|
||||||
/** This is called on each server generation. It should determine if
|
void
|
||||||
* DPMS is supported on all of the backends and, if so, return TRUE. */
|
dmxDPMSBackend(DMXScreenInfo *dmxScreen, int level)
|
||||||
Bool
|
|
||||||
DPMSSupported(void)
|
|
||||||
{
|
{
|
||||||
return dpmsSupported;
|
if (dmxScreen->beDisplay) {
|
||||||
}
|
DPMSForceLevel(dmxScreen->beDisplay, level);
|
||||||
|
dmxSync(dmxScreen, FALSE);
|
||||||
/** This is used by clients (e.g., xset) to set the DPMS level. */
|
|
||||||
int
|
|
||||||
DPMSSet(ClientPtr client, int level)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (!dpmsSupported)
|
|
||||||
return Success;
|
|
||||||
|
|
||||||
if (level < 0)
|
|
||||||
level = DPMSModeOn;
|
|
||||||
if (level > 3)
|
|
||||||
level = DPMSModeOff;
|
|
||||||
|
|
||||||
DPMSPowerLevel = level;
|
|
||||||
|
|
||||||
for (i = 0; i < dmxNumScreens; i++) {
|
|
||||||
DMXScreenInfo *dmxScreen = &dmxScreens[i];
|
|
||||||
|
|
||||||
if (dmxScreen->beDisplay) {
|
|
||||||
DPMSForceLevel(dmxScreen->beDisplay, level);
|
|
||||||
dmxSync(dmxScreen, FALSE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return Success;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -36,7 +36,8 @@
|
||||||
|
|
||||||
#ifndef _DMXDPMS_H_
|
#ifndef _DMXDPMS_H_
|
||||||
#define _DMXDPMS_H_
|
#define _DMXDPMS_H_
|
||||||
extern void dmxDPMSInit(DMXScreenInfo * dmxScreen);
|
extern int dmxDPMSInit(DMXScreenInfo * dmxScreen);
|
||||||
extern void dmxDPMSTerm(DMXScreenInfo * dmxScreen);
|
extern void dmxDPMSTerm(DMXScreenInfo * dmxScreen);
|
||||||
extern void dmxDPMSWakeup(void); /* Call when input is processed */
|
extern void dmxDPMSWakeup(void); /* Call when input is processed */
|
||||||
|
extern void dmxDPMSBackend(DMXScreenInfo *dmxScreen, int level);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -75,6 +75,17 @@ DevPrivateKeyRec dmxColormapPrivateKeyRec;
|
||||||
DevPrivateKeyRec dmxPictPrivateKeyRec;
|
DevPrivateKeyRec dmxPictPrivateKeyRec;
|
||||||
DevPrivateKeyRec dmxGlyphSetPrivateKeyRec;
|
DevPrivateKeyRec dmxGlyphSetPrivateKeyRec;
|
||||||
|
|
||||||
|
#ifdef DPMSExtension
|
||||||
|
static void
|
||||||
|
dmxDPMS(ScreenPtr pScreen, int level)
|
||||||
|
{
|
||||||
|
DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
|
||||||
|
dmxDPMSBackend(dmxScreen, level);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define dmxDPMS NULL
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Initialize the parts of screen \a idx that require access to the
|
/** Initialize the parts of screen \a idx that require access to the
|
||||||
* back-end server. */
|
* back-end server. */
|
||||||
void
|
void
|
||||||
|
@ -103,7 +114,8 @@ dmxBEScreenInit(ScreenPtr pScreen)
|
||||||
pScreen->blackPixel = dmxScreen->beBlackPixel;
|
pScreen->blackPixel = dmxScreen->beBlackPixel;
|
||||||
|
|
||||||
/* Handle screen savers and DPMS on the backend */
|
/* Handle screen savers and DPMS on the backend */
|
||||||
dmxDPMSInit(dmxScreen);
|
if (dmxDPMSInit(dmxScreen))
|
||||||
|
pScreen->DPMS = dmxDPMS;
|
||||||
|
|
||||||
/* Create root window for screen */
|
/* Create root window for screen */
|
||||||
mask = CWBackPixel | CWEventMask | CWColormap | CWOverrideRedirect;
|
mask = CWBackPixel | CWEventMask | CWColormap | CWOverrideRedirect;
|
||||||
|
|
|
@ -1193,18 +1193,6 @@ OsVendorFatalError(const char *f, va_list args)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
DPMSSet(ClientPtr client, int level)
|
|
||||||
{
|
|
||||||
return Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
Bool
|
|
||||||
DPMSSupported(void)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* These stubs can be safely removed once we can
|
/* These stubs can be safely removed once we can
|
||||||
* split input and GPU parts in hotplug.h et al. */
|
* split input and GPU parts in hotplug.h et al. */
|
||||||
#ifdef CONFIG_UDEV_KMS
|
#ifdef CONFIG_UDEV_KMS
|
||||||
|
|
|
@ -16,7 +16,6 @@ XVFB_LIBS = \
|
||||||
@XVFB_LIBS@ \
|
@XVFB_LIBS@ \
|
||||||
$(MAIN_LIB) \
|
$(MAIN_LIB) \
|
||||||
$(XSERVER_LIBS) \
|
$(XSERVER_LIBS) \
|
||||||
$(top_builddir)/Xext/libXextdpmsstubs.la \
|
|
||||||
$(top_builddir)/Xi/libXistubs.la
|
$(top_builddir)/Xi/libXistubs.la
|
||||||
|
|
||||||
Xvfb_LDADD = $(XVFB_LIBS) $(XVFB_SYS_LIBS) $(XSERVER_SYS_LIBS)
|
Xvfb_LDADD = $(XVFB_LIBS) $(XVFB_SYS_LIBS) $(XSERVER_SYS_LIBS)
|
||||||
|
|
|
@ -47,6 +47,19 @@
|
||||||
#include "xf86VGAarbiter.h"
|
#include "xf86VGAarbiter.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef DPMSExtension
|
||||||
|
static void
|
||||||
|
xf86DPMS(ScreenPtr pScreen, int level)
|
||||||
|
{
|
||||||
|
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
|
||||||
|
if (pScrn->DPMSSet && pScrn->vtSema) {
|
||||||
|
xf86VGAarbiterLock(pScrn);
|
||||||
|
pScrn->DPMSSet(pScrn, level, 0);
|
||||||
|
xf86VGAarbiterUnlock(pScrn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags)
|
xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags)
|
||||||
{
|
{
|
||||||
|
@ -69,84 +82,10 @@ xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags)
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
xf86DrvMsg(pScreen->myNum, enabled_from, "DPMS enabled\n");
|
xf86DrvMsg(pScreen->myNum, enabled_from, "DPMS enabled\n");
|
||||||
pScrn->DPMSSet = set;
|
pScrn->DPMSSet = set;
|
||||||
|
pScreen->DPMS = xf86DPMS;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
#else
|
#else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DPMSExtension
|
|
||||||
|
|
||||||
static void
|
|
||||||
DPMSSetScreen(ScrnInfoPtr pScrn, int level)
|
|
||||||
{
|
|
||||||
if (pScrn->DPMSSet && pScrn->vtSema) {
|
|
||||||
xf86VGAarbiterLock(pScrn);
|
|
||||||
pScrn->DPMSSet(pScrn, level, 0);
|
|
||||||
xf86VGAarbiterUnlock(pScrn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* DPMSSet --
|
|
||||||
* Device dependent DPMS mode setting hook. This is called whenever
|
|
||||||
* the DPMS mode is to be changed.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
DPMSSet(ClientPtr client, int level)
|
|
||||||
{
|
|
||||||
int rc, i;
|
|
||||||
|
|
||||||
DPMSPowerLevel = level;
|
|
||||||
|
|
||||||
if (level != DPMSModeOn) {
|
|
||||||
if (xf86IsUnblank(screenIsSaved)) {
|
|
||||||
rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverActive);
|
|
||||||
if (rc != Success)
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
} else if (!xf86IsUnblank(screenIsSaved)) {
|
|
||||||
rc = dixSaveScreens(client, SCREEN_SAVER_OFF, ScreenSaverReset);
|
|
||||||
if (rc != Success)
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* For each screen, set the DPMS level */
|
|
||||||
for (i = 0; i < xf86NumScreens; i++) {
|
|
||||||
DPMSSetScreen(xf86Screens[i], level);
|
|
||||||
}
|
|
||||||
for (i = 0; i < xf86NumGPUScreens; i++) {
|
|
||||||
DPMSSetScreen(xf86GPUScreens[i], level);
|
|
||||||
}
|
|
||||||
return Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Bool
|
|
||||||
DPMSSupportedOnScreen(ScrnInfoPtr pScrn)
|
|
||||||
{
|
|
||||||
return pScrn->DPMSSet != NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* DPMSSupported --
|
|
||||||
* Return TRUE if any screen supports DPMS.
|
|
||||||
*/
|
|
||||||
Bool
|
|
||||||
DPMSSupported(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* For each screen, check if DPMS is supported */
|
|
||||||
for (i = 0; i < xf86NumScreens; i++) {
|
|
||||||
if (DPMSSupportedOnScreen(xf86Screens[i]))
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
for (i = 0; i < xf86NumGPUScreens; i++) {
|
|
||||||
if (DPMSSupportedOnScreen(xf86GPUScreens[i]))
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* DPMSExtension */
|
|
||||||
|
|
|
@ -45,7 +45,6 @@ SRCS = Args.c \
|
||||||
|
|
||||||
XNEST_LIBS = \
|
XNEST_LIBS = \
|
||||||
@XNEST_LIBS@ \
|
@XNEST_LIBS@ \
|
||||||
$(top_builddir)/Xext/libXextdpmsstubs.la \
|
|
||||||
$(top_builddir)/Xi/libXistubs.la
|
$(top_builddir)/Xi/libXistubs.la
|
||||||
|
|
||||||
Xnest_SOURCES = $(SRCS)
|
Xnest_SOURCES = $(SRCS)
|
||||||
|
@ -57,10 +56,5 @@ Xnest_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
|
||||||
EXTRA_DIST = icon \
|
EXTRA_DIST = icon \
|
||||||
screensaver
|
screensaver
|
||||||
|
|
||||||
# -UDPMSExtension for miinitext? can't put into
|
|
||||||
# OS_DEFINES???
|
|
||||||
# EXT_DEFINES???
|
|
||||||
# ICONFIGFILES -- SpecialCObjectRule
|
|
||||||
|
|
||||||
relink:
|
relink:
|
||||||
$(AM_V_at)rm -f Xnest$(EXEEXT) && $(MAKE) Xnest$(EXEEXT)
|
$(AM_V_at)rm -f Xnest$(EXEEXT) && $(MAKE) Xnest$(EXEEXT)
|
||||||
|
|
|
@ -18,7 +18,6 @@ Xwayland_SOURCES = \
|
||||||
xwayland-cvt.c \
|
xwayland-cvt.c \
|
||||||
xwayland-vidmode.c \
|
xwayland-vidmode.c \
|
||||||
xwayland.h \
|
xwayland.h \
|
||||||
$(top_srcdir)/Xext/dpmsstubs.c \
|
|
||||||
$(top_srcdir)/Xi/stubs.c \
|
$(top_srcdir)/Xi/stubs.c \
|
||||||
$(top_srcdir)/mi/miinitext.c
|
$(top_srcdir)/mi/miinitext.c
|
||||||
|
|
||||||
|
|
|
@ -138,7 +138,6 @@ XWIN_SYS_LIBS += -ldxguid
|
||||||
|
|
||||||
XWIN_LIBS += \
|
XWIN_LIBS += \
|
||||||
$(top_builddir)/pseudoramiX/libPseudoramiX.la \
|
$(top_builddir)/pseudoramiX/libPseudoramiX.la \
|
||||||
$(top_builddir)/Xext/libXextdpmsstubs.la \
|
|
||||||
$(top_builddir)/Xi/libXistubs.la
|
$(top_builddir)/Xi/libXistubs.la
|
||||||
|
|
||||||
XWin_DEPENDENCIES = \
|
XWin_DEPENDENCIES = \
|
||||||
|
|
|
@ -400,6 +400,8 @@ typedef WindowPtr (*XYToWindowProcPtr)(ScreenPtr pScreen,
|
||||||
|
|
||||||
typedef int (*NameWindowPixmapProcPtr)(WindowPtr, PixmapPtr, CARD32);
|
typedef int (*NameWindowPixmapProcPtr)(WindowPtr, PixmapPtr, CARD32);
|
||||||
|
|
||||||
|
typedef void (*DPMSProcPtr)(ScreenPtr pScreen, int level);
|
||||||
|
|
||||||
/* Wrapping Screen procedures
|
/* Wrapping Screen procedures
|
||||||
|
|
||||||
There are a few modules in the X server which dynamically add and
|
There are a few modules in the X server which dynamically add and
|
||||||
|
@ -657,6 +659,7 @@ typedef struct _Screen {
|
||||||
|
|
||||||
ReplaceScanoutPixmapProcPtr ReplaceScanoutPixmap;
|
ReplaceScanoutPixmapProcPtr ReplaceScanoutPixmap;
|
||||||
XYToWindowProcPtr XYToWindow;
|
XYToWindowProcPtr XYToWindow;
|
||||||
|
DPMSProcPtr DPMS;
|
||||||
} ScreenRec;
|
} ScreenRec;
|
||||||
|
|
||||||
static inline RegionPtr
|
static inline RegionPtr
|
||||||
|
|
Loading…
Reference in New Issue
Block a user