From http://www.jwz.org/xscreensaver/xscreensaver-5.35.tar.gz
[xscreensaver] / hacks / rotzoomer.c
index b0c81fab157eac22adbf998eaeca8dbfb0c135c7..e4cd8536c85cf3b4c740c6992961917acb62303a 100644 (file)
@@ -97,9 +97,6 @@ rotzoom (struct state *st, struct zoom_area *za)
         int dy = y - cy;
         int d2 = (dx*dx) + (dy*dy);
 
-        ox = x;
-        oy = y;
-
         if (d2 > w2) {
           ox = x;
           oy = y;
@@ -269,7 +266,7 @@ create_zoom (struct state *st)
 {
   struct zoom_area *za;
 
-  za = malloc (sizeof (struct zoom_area));
+  za = calloc (1, sizeof (struct zoom_area));
   reset_zoom (st, za);
 
   return za;
@@ -325,7 +322,7 @@ init_hack (struct state *st)
 {
   int i;
 
-  st->start_time = time ((time_t) 0);
+  st->start_time = time ((time_t *) 0);
   st->zoom_box = calloc (st->num_zoom, sizeof (struct zoom_area *));
   for (i = 0; i < st->num_zoom; i++) {
     st->zoom_box[i] = create_zoom (st);
@@ -358,12 +355,12 @@ rotzoomer_draw (Display *disp, Window win, void *closure)
     }
 
   if (!st->img_loader &&
-      st->start_time + st->duration < time ((time_t) 0)) {
+      st->start_time + st->duration < time ((time_t *) 0)) {
     XWindowAttributes xgwa;
     XGetWindowAttributes(st->dpy, st->window, &xgwa);
     st->img_loader = load_image_async_simple (0, xgwa.screen, st->window,
                                               st->window, 0, 0);
-    st->start_time = time ((time_t) 0);
+    st->start_time = time ((time_t *) 0);
     return st->delay;
   }
 
@@ -486,7 +483,7 @@ rotzoomer_init (Display *dpy, Window window)
     st->sweep = 0;
   }
 
-  st->start_time = time ((time_t) 0);
+  st->start_time = time ((time_t *) 0);
 
   setup_X (st);
 
@@ -502,6 +499,12 @@ rotzoomer_reshape (Display *dpy, Window window, void *closure,
 static Bool
 rotzoomer_event (Display *dpy, Window window, void *closure, XEvent *event)
 {
+  struct state *st = (struct state *) closure;
+  if (screenhack_event_helper (dpy, window, event))
+    {
+      st->start_time = 0;
+      return True;
+    }
   return False;
 }
 
@@ -527,8 +530,9 @@ static const char *rotzoomer_defaults[] = {
   "*numboxes: 2",
   "*delay: 10000",
   "*duration: 120",
-#ifdef USE_IPHONE
+#ifdef HAVE_MOBILE
   "*ignoreRotation: True",
+  "*rotateImages:   True",
 #endif
   0
 };