diff options
author | Adam Jackson <ajax@redhat.com> | 2017-03-24 12:30:57 -0400 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2017-03-27 15:59:42 -0400 |
commit | 7f1ef9289d974fc2bacc968ae0b5d7714382cb9e (patch) | |
tree | 33d7e28931d3d8d7db698ce06a736f01de7075bb /hw/xfree86/common/xf86DPMS.c | |
parent | 8ed0b00fceb34cdb54a0ea113c3cdff3b4c9e7e1 (diff) |
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>
Diffstat (limited to 'hw/xfree86/common/xf86DPMS.c')
-rw-r--r-- | hw/xfree86/common/xf86DPMS.c | 89 |
1 files changed, 14 insertions, 75 deletions
diff --git a/hw/xfree86/common/xf86DPMS.c b/hw/xfree86/common/xf86DPMS.c index a5324e0b1..ee495483e 100644 --- a/hw/xfree86/common/xf86DPMS.c +++ b/hw/xfree86/common/xf86DPMS.c @@ -47,6 +47,19 @@ #include "xf86VGAarbiter.h" #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 xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags) { @@ -69,84 +82,10 @@ xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags) if (enabled) { xf86DrvMsg(pScreen->myNum, enabled_from, "DPMS enabled\n"); pScrn->DPMSSet = set; + pScreen->DPMS = xf86DPMS; } return TRUE; #else return FALSE; #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 */ |