X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=driver%2Ftest-xdpms.c;h=b86aed3af56cfe409d4ffe4315a3189a66ab78f8;hb=1d7308dd9032b39a92fda86e8c2db04218b45fbf;hp=79a0dfdf0d67830508b427bad7a73a44cee984d6;hpb=a719ec12b8b2563112366a8ac3196816fd64d2c7;p=xscreensaver diff --git a/driver/test-xdpms.c b/driver/test-xdpms.c index 79a0dfdf..b86aed3a 100644 --- a/driver/test-xdpms.c +++ b/driver/test-xdpms.c @@ -1,5 +1,5 @@ /* test-xdpms.c --- playing with the XDPMS extension. - * xscreensaver, Copyright (c) 1998 Jamie Zawinski + * xscreensaver, Copyright (c) 1998-2011 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 @@ -20,6 +20,7 @@ #endif #include +#include #include #include @@ -64,6 +65,16 @@ blurb (void) } +static Bool error_handler_hit_p = False; + +static int +ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error) +{ + error_handler_hit_p = True; + return 0; +} + + int main (int argc, char **argv) { @@ -147,11 +158,20 @@ main (int argc, char **argv) state == DPMSModeSuspend || state == DPMSModeOff) { - Status st; + XErrorHandler old_handler; + int st; fprintf(stderr, "%s: monitor is off; turning it on.\n", blurb()); + + XSync (dpy, False); + error_handler_hit_p = False; + old_handler = XSetErrorHandler (ignore_all_errors_ehandler); + XSync (dpy, False); st = DPMSForceLevel (dpy, DPMSModeOn); + XSync (dpy, False); + if (error_handler_hit_p) st = -666; + fprintf (stderr, "%s: DPMSForceLevel (dpy, DPMSModeOn) ==> %s\n", - blurb(), (st ? "Ok" : "Error")); + blurb(), (st == -666 ? "X Error" : st ? "Ok" : "Error")); } sleep (delay);