From http://www.jwz.org/xscreensaver/xscreensaver-5.22.tar.gz
[xscreensaver] / hacks / goop.c
index 4028fb3c7e069799c5a0e27f10b3e9ce295f0a9b..f7229cce153fa7b4ee3cda37c1f1a636845d5406 100644 (file)
@@ -47,7 +47,6 @@
 #define SCALE       10000  /* fixed-point math, for sub-pixel motion */
 #define DEF_COUNT   12    /* When planes and count are 0, how many blobs. */
 
-
 #define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n))))
 #define RANDSIGN() ((random() & 1) ? 1 : -1)
 
@@ -126,7 +125,7 @@ make_blob (Display *dpy, int maxx, int maxy, int size)
   b->spline = make_spline (b->npoints);
   b->r = (long *) malloc (sizeof(*b->r) * b->npoints);
   for (i = 0; i < b->npoints; i++)
-    b->r[i] = ((random() % mid) + (mid/2)) * RANDSIGN();
+    b->r[i] = (long) ((random() % mid) + (mid/2)) * RANDSIGN();
   return b;
 }
 
@@ -340,7 +339,9 @@ make_goop (Screen *screen, Visual *visual, Window window, Colormap cmap,
   goop->nlayers = get_integer_resource (dpy, "planes", "Planes");
   if (goop->nlayers <= 0)
     goop->nlayers = (random() % (depth-2)) + 2;
-  goop->layers = (struct layer **) malloc(sizeof(*goop->layers)*goop->nlayers);
+  if (! goop->layers)
+    goop->layers = (struct layer **) 
+      malloc(sizeof(*goop->layers)*goop->nlayers);
 
   goop->additive_p = get_boolean_resource (dpy, "additive", "Additive");
   goop->cmap_p = has_writable_cells (screen, visual);
@@ -543,7 +544,11 @@ static void
 goop_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
-  /* #### write me */
+  struct goop *goop = (struct goop *) closure;
+
+  /* #### leaks like crazy */
+  struct goop *goop2 = goop_init (dpy, window);
+  memcpy (goop, goop2, sizeof(*goop));
 }
 
 static Bool
@@ -572,6 +577,9 @@ static const char *goop_defaults [] = {
   "*torque:            0.0075",
   "*elasticity:                0.9",
   "*maxVelocity:       0.5",
+#ifdef USE_IPHONE
+  "*ignoreRotation:     True",
+#endif
   0
 };