diff options
Diffstat (limited to 'driver/dpms.c')
-rw-r--r-- | driver/dpms.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/driver/dpms.c b/driver/dpms.c index a0dd7b8..3a8803c 100644 --- a/driver/dpms.c +++ b/driver/dpms.c @@ -86,8 +86,12 @@ #ifdef HAVE_DPMS_EXTENSION +#define CLAMP_DOWN(var,val,mi) do { int old = (var); (var) -= (val); if ((var) < (mi) || (var) > old) (var) = (mi); } while (0) + static Bool error_handler_hit_p = False; +static int idle_offset = 0; + static int ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error) { @@ -95,6 +99,12 @@ ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error) return 0; } +void +store_dpms_offset(int offset) +{ + idle_offset = offset < 15 ? 0 : offset; +} + void sync_server_dpms_settings (Display *dpy, Bool enabled_p, Bool dpms_quickoff_p, @@ -125,6 +135,13 @@ sync_server_dpms_settings (Display *dpy, Bool enabled_p, Bool dpms_quickoff_p, if (bogus_p) enabled_p = False; + if (idle_offset != 0) + { + CLAMP_DOWN (standby_secs, idle_offset, 10); + CLAMP_DOWN (suspend_secs, idle_offset, 10); + CLAMP_DOWN (off_secs, idle_offset, 10); + } + /* X protocol sends these values in a CARD16, so truncate them to 16 bits. This means that the maximum timeout is 18:12:15. */ @@ -280,6 +297,12 @@ monitor_power_on (saver_info *si, Bool on_p) #else /* !HAVE_DPMS_EXTENSION */ void +store_dpms_offset(Display *dpy, Bool reset_p) +{ +} + + +void sync_server_dpms_settings (Display *dpy, Bool enabled_p, Bool dpms_quickoff_p, int standby_secs, int suspend_secs, int off_secs, |