X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fnoseguy.c;h=332972b0dfd700927c3461af243ea732cd796d78;hb=f0261d8acab611f3433160e4f07367b870439739;hp=f6502bef5621059f5214e5291c52bf0debcfd939;hpb=49f5b54f312fe4ac2e9bc47581a72451bd0e8439;p=xscreensaver diff --git a/hacks/noseguy.c b/hacks/noseguy.c index f6502bef..332972b0 100644 --- a/hacks/noseguy.c +++ b/hacks/noseguy.c @@ -1,5 +1,4 @@ -/* xscreensaver, Copyright (c) 1992, 1996, 1997, 1998, 2005, 2006 - * Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-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 @@ -71,13 +70,7 @@ static void talk_1 (struct state *); static int think (struct state *); static unsigned long look (struct state *); -#define FROM_ARGV 1 -#define FROM_PROGRAM 2 -#define FROM_FILE 3 -#define FROM_RESRC 4 - #define IS_MOVING 1 -#define GET_PASSWD 2 #if defined(HAVE_GDK_PIXBUF) || defined(HAVE_XPM) # include "images/noseguy/nose-f1.xpm" @@ -196,6 +189,17 @@ move (struct state *st) st->move_length = st->Width / 100 + random() % 90, tries = 8; else tries--; + /* There maybe the case that we won't be able to exit from + this routine (especially when the geometry is too small)!! + + Ensure that we can exit from this routine. + */ +#if 1 + if (!tries && (st->move_length <= 1)) { + st->move_length = 1; + break; + } +#endif switch (random() % 8) { case 0: @@ -239,7 +243,8 @@ move (struct state *st) } } while (!st->move_dir); } - walk(st, st->move_dir); + if (st->move_dir) + walk(st, st->move_dir); --st->move_length; st->next_fn = move; } @@ -557,6 +562,7 @@ static const char *noseguy_defaults [] = { ".foreground: #CCCCCC", "*textForeground: black", "*textBackground: #CCCCCC", + "*fpsSolid: true", "*program: xscreensaver-text --cols 40 | head -n15", ".font: -*-new century schoolbook-*-r-*-*-*-180-*-*-*-*-*-*", 0