From http://www.jwz.org/xscreensaver/xscreensaver-5.37.tar.gz
[xscreensaver] / hacks / interaggregate.c
index 986acd5327a0292b23bdf5e52b1cd7efe1a6b211..6308841f8fb2bfcc503a1f3b8fa5dfe61c5444fc 100644 (file)
@@ -85,6 +85,9 @@ static const char *interaggregate_defaults[] =
     "*baseOrbits: 75",
     "*baseOnCenter: False",
     "*drawCenters: False",
+#ifdef HAVE_MOBILE
+    "*ignoreRotation: True",
+#endif
     0
 };
 
@@ -256,7 +259,7 @@ static inline void point2rgb(int depth, unsigned long c, int *r, int *g, int *b)
     {
     case 32:
     case 24:
-#ifdef HAVE_COCOA
+#ifdef HAVE_JWXYZ
         /* This program idiotically does not go through a color map, so
            we have to hardcode in knowledge of how jwxyz.a packs pixels!
            Fix it to go through st->colors[st->ncolors] instead!
@@ -271,14 +274,14 @@ static inline void point2rgb(int depth, unsigned long c, int *r, int *g, int *b)
 #endif
        break;
     case 16:
-       *b = (c & 0x1f) << 3; 
-       *g = ((c >> 5) & 0x3f) << 2;
-       *r = ((c >> 11) & 0x1f) << 3; 
+       *b = (int) (c & 0x1f) << 3;
+       *g = (int) ((c >> 5) & 0x3f) << 2;
+       *r = (int) ((c >> 11) & 0x1f) << 3;
        break;
     case 15:
-       *b = (c & 0x1f) << 3;
-       *g = ((c >> 5) & 0x1f) << 3;
-       *r = ((c >> 10) & 0x1f) << 3;
+       *b = (int) (c & 0x1f) << 3;
+       *g = (int) ((c >> 5) & 0x1f) << 3;
+       *r = (int) ((c >> 10) & 0x1f) << 3;
        break;
     }
 }
@@ -290,9 +293,8 @@ static inline unsigned long rgb2point(int depth, int r, int g, int b)
     switch(depth) 
     {
     case 32:
-       ret = 0xff000000;
     case 24:
-#ifdef HAVE_COCOA
+#ifdef HAVE_JWXYZ
         /* This program idiotically does not go through a color map, so
            we have to hardcode in knowledge of how jwxyz.a packs pixels!
            Fix it to go through st->colors[st->ncolors] instead!
@@ -438,6 +440,7 @@ static void build_colors(struct field *f, Display *dpy, XWindowAttributes *xgwa)
        ;
     }
 
+    if (f->numcolors < 1) f->numcolors = 1;
     f->parsedcolors = (unsigned long *) calloc(f->numcolors,
                                               sizeof(unsigned long));
     if ( f->parsedcolors == NULL )
@@ -958,6 +961,12 @@ interaggregate_reshape (Display *dpy, Window window, void *closure,
 static Bool
 interaggregate_event (Display *dpy, Window window, void *closure, XEvent *event)
 {
+  struct state *st = (struct state *) closure;
+  if (screenhack_event_helper (dpy, window, event))
+    {
+      st->f->height--;  /* act like a resize */
+      return True;
+    }
   return False;
 }