http://ftp.nluug.nl/pub/os/Linux/distr/pardusrepo/sources/xscreensaver-5.02.tar.gz
[xscreensaver] / hacks / starfish.c
index f013482baff954bd5088628566f9d16f68836df5..b192e280dcbbab4a7481dc05b963275cd671ab24 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1997, 1998, 2006 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2007 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -345,6 +345,8 @@ reset_starfish (struct state *st)
       if (st->colors)
        free (st->colors);
       st->colors = 0;
+      XFreeGC (st->dpy, st->gc);
+      st->gc = 0;
     }
 
   st->ncolors = get_integer_resource (st->dpy, "colors", "Colors");
@@ -434,7 +436,7 @@ starfish_init (Display *dpy, Window window)
   st->delay2 = get_integer_resource (st->dpy, "delay2", "Delay") * 1000000;
 /*  st->duration = get_seconds_resource (st->dpy, "duration", "Seconds");*/
   st->duration = get_integer_resource (st->dpy, "duration", "Seconds");
-  st->direction = (random() % 1) ? 1 : -1;
+  st->direction = (random() & 1) ? 1 : -1;
 
   s = get_string_resource (st->dpy, "mode", "Mode");
   if (s && !strcasecmp (s, "blob"))
@@ -479,6 +481,8 @@ starfish_draw (Display *dpy, Window window, void *closure)
             s = reset_starfish (st);
           else
             s = make_window_starfish (st);
+
+         st->starfish = s;
         }
     }