From http://www.jwz.org/xscreensaver/xscreensaver-5.35.tar.gz
[xscreensaver] / hacks / maze.c
index 10704fa77f90f852440a3e3cbb6afe17b70adb51..9afe44159c2c59a5eff02d263b32ae9cb371cc44 100644 (file)
@@ -871,8 +871,10 @@ static int
 backup (struct state *st)                                          /* back up a move */
 {
   st->sqnum--;
-  st->cur_sq_x = st->move_list[st->sqnum].x;
-  st->cur_sq_y = st->move_list[st->sqnum].y;
+  if (st->sqnum >= 0) {
+    st->cur_sq_x = st->move_list[st->sqnum].x;
+    st->cur_sq_y = st->move_list[st->sqnum].y;
+  }
   return ( st->sqnum );
 }
 
@@ -1468,6 +1470,10 @@ maze_init (Display *dpy_arg, Window window_arg)
   XSetForeground (st->dpy, st->erase_gc, bg);
   XSetBackground (st->dpy, st->erase_gc, bg);
 
+# ifdef HAVE_JWXYZ
+  jwxyz_XSetAntiAliasing (st->dpy, st->gc, False);
+# endif
+
   {
     Window r;
     int x, y;
@@ -1612,9 +1618,8 @@ static Bool
 maze_event (Display *dpy, Window window, void *closure, XEvent *event)
 {
   struct state *st = (struct state *) closure;
-  switch (event->type) 
+  if (event->type == ButtonPress)
     {
-    case ButtonPress:
       switch (event->xbutton.button) 
         {
         case 2:
@@ -1631,14 +1636,17 @@ maze_event (Display *dpy, Window window, void *closure, XEvent *event)
           st->stop = 0 ;
           return True;
         }
-      break;
-
-    case Expose:
+    }
+  else if (event->type == Expose)
+    {
       st->restart = 1;
-      break;
-
-    default:
-      break;
+      return False;
+    }
+  else if (screenhack_event_helper (dpy, window, event))
+    {
+      st->restart = 1 ;
+      st->stop = 0 ;
+      return True;
     }
   return False;
 }