X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=driver%2Ftest-xdpms.c;h=b86aed3af56cfe409d4ffe4315a3189a66ab78f8;hp=a401c38cd7aca45f7773882d54adebba4d3ab57a;hb=1d7308dd9032b39a92fda86e8c2db04218b45fbf;hpb=5f9c47ca98dd43d8f59b7c27d3fde6edfde4fe21 diff --git a/driver/test-xdpms.c b/driver/test-xdpms.c index a401c38c..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 @@ -65,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) { @@ -148,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);