X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=driver%2Fxset.c;h=99d11c2f96a18ae79a65428cbbed2ba36a6adec6;hp=677a8c0a2dc5b3f8082bf84513f11932746035b9;hb=3f438031d610c7e15fd33876a879b97e290e05fb;hpb=447db08c956099b3b183886729108bf5b364c4b8 diff --git a/driver/xset.c b/driver/xset.c index 677a8c0a..99d11c2f 100644 --- a/driver/xset.c +++ b/driver/xset.c @@ -1,5 +1,5 @@ /* xset.c --- interacting with server extensions and the builtin screensaver. - * xscreensaver, Copyright (c) 1991-2004 Jamie Zawinski + * xscreensaver, Copyright (c) 1991-2005 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -303,125 +303,3 @@ disable_builtin_screensaver (saver_info *si, Bool unblank_screen_p) /* Turn off the server builtin saver if it is now running. */ XForceScreenSaver (si->dpy, ScreenSaverReset); } - - -/* Display Power Management System (DPMS.) - - On XFree86 systems, "man xset" reports: - - -dpms The -dpms option disables DPMS (Energy Star) features. - +dpms The +dpms option enables DPMS (Energy Star) features. - - dpms flags... - The dpms option allows the DPMS (Energy Star) - parameters to be set. The option can take up to three - numerical values, or the `force' flag followed by a - DPMS state. The `force' flags forces the server to - immediately switch to the DPMS state specified. The - DPMS state can be one of `standby', `suspend', or - `off'. When numerical values are given, they set the - inactivity period before the three modes are activated. - The first value given is for the `standby' mode, the - second is for the `suspend' mode, and the third is for - the `off' mode. Setting these values implicitly - enables the DPMS features. A value of zero disables a - particular mode. - - However, note that the implementation is more than a little bogus, - in that there is code in /usr/X11R6/lib/libXdpms.a to implement all - the usual server-extension-querying utilities -- but there are no - prototypes in any header file! Thus, the prototypes here. (The - stuff in X11/extensions/dpms.h and X11/extensions/dpmsstr.h define - the raw X protcol, they don't define the API to libXdpms.a.) - - Some documentation: - Library: ftp://ftp.x.org/pub/R6.4/xc/doc/specs/Xext/DPMSLib.ms - Protocol: ftp://ftp.x.org/pub/R6.4/xc/doc/specs/Xext/DPMS.ms - */ - -#ifdef HAVE_DPMS_EXTENSION - -#include /* for CARD16 */ -#include -#include - -extern Bool DPMSQueryExtension (Display *dpy, int *event_ret, int *error_ret); -extern Bool DPMSCapable (Display *dpy); -extern Status DPMSForceLevel (Display *dpy, CARD16 level); -extern Status DPMSInfo (Display *dpy, CARD16 *power_level, BOOL *state); - -#if 0 /* others we don't use */ -extern Status DPMSGetVersion (Display *dpy, int *major_ret, int *minor_ret); -extern Status DPMSSetTimeouts (Display *dpy, - CARD16 standby, CARD16 suspend, CARD16 off); -extern Bool DPMSGetTimeouts (Display *dpy, - CARD16 *standby, CARD16 *suspend, CARD16 *off); -extern Status DPMSEnable (Display *dpy); -extern Status DPMSDisable (Display *dpy); -#endif /* 0 */ - - -Bool -monitor_powered_on_p (saver_info *si) -{ - Bool result; - int event_number, error_number; - BOOL onoff = False; - CARD16 state; - - if (!DPMSQueryExtension(si->dpy, &event_number, &error_number)) - /* Server doesn't know -- assume the monitor is on. */ - result = True; - - else if (!DPMSCapable(si->dpy)) - /* Server says the monitor doesn't do power management -- so it's on. */ - result = True; - - else - { - DPMSInfo(si->dpy, &state, &onoff); - if (!onoff) - /* Server says DPMS is disabled -- so the monitor is on. */ - result = True; - else - switch (state) { - case DPMSModeOn: result = True; break; /* really on */ - case DPMSModeStandby: result = False; break; /* kinda off */ - case DPMSModeSuspend: result = False; break; /* pretty off */ - case DPMSModeOff: result = False; break; /* really off */ - default: result = True; break; /* protocol error? */ - } - } - - return result; -} - -void -monitor_power_on (saver_info *si) -{ - if (!monitor_powered_on_p (si)) - { - DPMSForceLevel(si->dpy, DPMSModeOn); - XSync(si->dpy, False); - if (!monitor_powered_on_p (si)) - fprintf (stderr, - "%s: DPMSForceLevel(dpy, DPMSModeOn) did not power the monitor on?\n", - blurb()); - } -} - -#else /* !HAVE_DPMS_EXTENSION */ - -Bool -monitor_powered_on_p (saver_info *si) -{ - return True; -} - -void -monitor_power_on (saver_info *si) -{ - return; -} - -#endif /* !HAVE_DPMS_EXTENSION */