X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=driver%2Fxset.c;h=8378e1cf8b0073b3ff172b62fddfb22f47aa8807;hb=f0261d8acab611f3433160e4f07367b870439739;hp=2e167c1468dd6e463aa6c1ebb22d5fe0ade146c6;hpb=df7adbee81405e2849728a24b498ad2117784b1f;p=xscreensaver diff --git a/driver/xset.c b/driver/xset.c index 2e167c14..8378e1cf 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-1998 Jamie Zawinski + * xscreensaver, Copyright (c) 1991-2008 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 @@ -42,14 +42,6 @@ ERROR! You must not include vroot.h in this file. # include -Bool -query_mit_saver_extension (saver_info *si) -{ - return XScreenSaverQueryExtension (si->dpy, - &si->mit_saver_ext_event_number, - &si->mit_saver_ext_error_number); -} - static int ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error) { @@ -101,14 +93,6 @@ init_mit_saver_extension (saver_info *si) # include -Bool -query_sgi_saver_extension (saver_info *si) -{ - return XScreenSaverQueryExtension (si->dpy, - &si->sgi_saver_ext_event_number, - &si->sgi_saver_ext_error_number); -} - static void init_sgi_saver_extension (saver_info *si) { @@ -137,24 +121,6 @@ init_sgi_saver_extension (saver_info *si) #endif /* HAVE_SGI_SAVER_EXTENSION */ - -/* XIDLE server extension hackery. - */ - -#ifdef HAVE_XIDLE_EXTENSION - -# include - -Bool -query_xidle_extension (saver_info *si) -{ - int event_number; - int error_number; - return XidleQueryExtension (si->dpy, &event_number, &error_number); -} - -#endif /* HAVE_XIDLE_EXTENSION */ - /* Figuring out what the appropriate XSetScreenSaver() parameters are @@ -193,7 +159,7 @@ disable_builtin_screensaver (saver_info *si, Bool unblank_screen_p) /* I suspect (but am not sure) that DontAllowExposures might have something to do with powering off the monitor as well, at least - on some systems that don't support XDPMS? Who know... */ + on some systems that don't support XDPMS? Who knows... */ desired_allow_exp = AllowExposures; if (si->using_mit_saver_extension || si->using_sgi_saver_extension) @@ -218,19 +184,22 @@ disable_builtin_screensaver (saver_info *si, Bool unblank_screen_p) desired_server_timeout = 0; } + /* XSetScreenSaver() generates BadValue if either timeout parameter + exceeds 15 bits (signed short.) That is 09:06:07. + */ + if (desired_server_timeout > 0x7FFF) desired_server_timeout = 0x7FFF; + if (desired_server_interval > 0x7FFF) desired_server_interval = 0x7FFF; + if (desired_server_timeout != current_server_timeout || desired_server_interval != current_server_interval || desired_prefer_blank != current_prefer_blank || desired_allow_exp != current_allow_exp) { - if (unblank_screen_p) - fprintf (stderr, - "%s disabling server builtin screensaver.\n" - "%s: you can re-enable it with \"xset s on\".\n", - blurb(), blurb()); - if (p->verbose_p) - fprintf (stderr, "%s: (xset s %d %d; xset s %s; xset s %s)\n", blurb(), + fprintf (stderr, + "%s: disabling server builtin screensaver:\n" + "%s: (xset s %d %d; xset s %s; xset s %s)\n", + blurb(), blurb(), desired_server_timeout, desired_server_interval, (desired_prefer_blank ? "blank" : "noblank"), (desired_allow_exp ? "expose" : "noexpose")); @@ -262,125 +231,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 */