From http://www.jwz.org/xscreensaver/xscreensaver-5.30.tar.gz
[xscreensaver] / hacks / vermiculate.c
index c6069e42525b7bbe85fea156fe21948b599c08d6..4d816ff63adbf5271c5496a77c04f8e1347d7e0a 100644 (file)
@@ -209,9 +209,8 @@ static void
 randpal (struct state *st)
 {
   int ncolors = tailmax - 1;
-  make_random_colormap (st->dpy,
-                       st->xgwa.visual,
-                       st->mycmap, &st->mycolors[1], &ncolors, True, True, 0, True);
+  make_random_colormap (st->xgwa.screen, st->xgwa.visual, st->mycmap,
+                        &st->mycolors[1], &ncolors, True, True, 0, True);
   if (ncolors < tailmax - 1)
     {
       int c;
@@ -264,7 +263,7 @@ bordupdate (struct state *st)
     for (x = xmin; x <= xmax; x++)
       sp (st, x, ybord, st->bordcol);
     for (y = ymin; y <= ymax; y++)
-      sp (st, ybord, y, st->bordcol);
+      sp (st, xbord, y, st->bordcol);
   }
 }
 
@@ -807,11 +806,22 @@ static void
 vermiculate_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->wid = w;
+  st->hei = h;
+  free (st->point);
+  st->point = (unsigned char *) calloc (1, st->wid * st->hei);
 }
 
 static Bool
 vermiculate_event (Display *dpy, Window window, void *closure, XEvent *event)
 {
+  struct state *st = (struct state *) closure;
+  if (screenhack_event_helper (dpy, window, event))
+    {
+      st->reset_p = 1;
+      return True;
+    }
   return False;
 }
 
@@ -878,8 +888,9 @@ consume_instring(struct state *st)
 block in which it's invoked, since it declares variables: */
 #define forallinbank(LDP) linedata *LDP; int bankc; \
                for (bankc = 1; \
-               (LDP = &st->thread[st->bank[bankc - 1] - 1],    \
-               bankc <= st->bnkt); bankc++)
+               ((bankc <= st->bnkt) ? ( \
+                       (LDP = &st->thread[st->bank[bankc - 1] - 1],    1) \
+                       ) : 0) ; bankc++)
                              {
                                forallinbank (L) L->slice = degs / (st->ch - '0');
                              }
@@ -1201,6 +1212,9 @@ static const char *vermiculate_defaults[] = {
   "*fpsSolid:  true",
   "*speed: 0",
   "*instring: ",
+#ifdef USE_IPHONE
+  "*ignoreRotation: True",
+#endif
   0
 };