X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=driver%2Fxscreensaver.c;h=07633112d2a4022bea5c30c8fcd6d68f48f3b8f6;hb=df053bcb240bd8d82e3bebf48a9766a8728bca4b;hp=24e40f282101762a81c447a59a9f5b645f69dacc;hpb=5b7bc6e70fb439cf4c4bf771ae9f94077fe4fe08;p=xscreensaver diff --git a/driver/xscreensaver.c b/driver/xscreensaver.c index 24e40f28..07633112 100644 --- a/driver/xscreensaver.c +++ b/driver/xscreensaver.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1991-1997 Jamie Zawinski +/* xscreensaver, Copyright (c) 1991-1998 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 @@ -108,7 +108,7 @@ * window exposed. * - If you run your debugger under XEmacs, try M-ESC (x-grab-keyboard) * to keep your emacs window alive even when xscreensaver has grabbed. - * - Go read the code related to -DDEBUG. + * - Go read the code related to `debug_p'. * - You probably can't set breakpoints in functions that are called on * the other side of a call to fork() -- if your clients are dying * with signal 5, Trace/BPT Trap, you're losing in this way. @@ -193,7 +193,7 @@ static void do_help (saver_info *si) { printf ("\ -xscreensaver %s, copyright (c) 1991-1997 by Jamie Zawinski \n\ +xscreensaver %s, copyright (c) 1991-1998 by Jamie Zawinski \n\ The standard Xt command-line options are accepted; other options include:\n\ \n\ -timeout When the screensaver should activate.\n\ @@ -482,14 +482,12 @@ get_resources (saver_info *si) get_screenhacks (si); -#ifdef DEBUG if (p->debug_p) { XSynchronize(si->dpy, True); p->verbose_p = True; p->initial_delay = 0; } -#endif /* DEBUG */ } @@ -547,10 +545,10 @@ initialize_connection (saver_info *si, int argc, char **argv) if (argc == 2 && !strcmp (argv[1], "-help")) do_help (si); -#ifdef DEBUG + else if (argc == 2 && !strcmp (argv[1], "-debug")) si->prefs.debug_p = True; /* no resource for this one, out of paranoia. */ -#endif /* DEBUG */ + else if (argc > 1) { fprintf (stderr, "%s: unknown option %s\n", progname, argv [1]); @@ -663,7 +661,7 @@ initialize (saver_info *si, int argc, char **argv) if (p->verbose_p) printf ("\ -%s %s, copyright (c) 1991-1997 by Jamie Zawinski \n\ +%s %s, copyright (c) 1991-1998 by Jamie Zawinski \n\ pid = %d.\n", progname, si->version, (int) getpid ()); @@ -820,7 +818,7 @@ main_loop (saver_info *si) if (si->demo_mode_p) demo_mode (si); else -#endif +#endif /* !NO_DEMO_MODE */ { if (p->verbose_p) printf ("%s: user is idle; waking up at %s.\n", progname, @@ -839,7 +837,7 @@ main_loop (saver_info *si) si->lock_id = XtAppAddTimeOut (si->app, p->lock_timeout, activate_lock_timer, (XtPointer) si); -#endif +#endif /* !NO_LOCKING */ PASSWD_INVALID: @@ -863,7 +861,7 @@ main_loop (saver_info *si) just after the server is grabbed, closing this window entirely. */ - /* ungrab_keyboard_and_mouse (); */ + /* ungrab_keyboard_and_mouse (si); */ { saver_screen_info *ssi = si->default_screen; @@ -881,7 +879,7 @@ main_loop (saver_info *si) /* I think this grab is now redundant, but it shouldn't hurt. */ if (!si->demo_mode_p) - grab_keyboard_and_mouse (si->dpy, ssi->screensaver_window, + grab_keyboard_and_mouse (si, ssi->screensaver_window, ssi->cursor); } @@ -889,21 +887,27 @@ main_loop (saver_info *si) goto PASSWD_INVALID; si->locked_p = False; } -#endif - unblank_screen (si); +#endif /* !NO_LOCKING */ + + /* Let's kill it before unblanking, to get it to stop drawing as + soon as possible... */ kill_screenhack (si); + unblank_screen (si); + if (si->cycle_id) { XtRemoveTimeOut (si->cycle_id); si->cycle_id = 0; } + #ifndef NO_LOCKING if (si->lock_id) { XtRemoveTimeOut (si->lock_id); si->lock_id = 0; } -#endif +#endif /* !NO_LOCKING */ + if (p->verbose_p) printf ("%s: user is active; going to sleep at %s.\n", progname, timestring ());