From http://www.jwz.org/xscreensaver/xscreensaver-5.16.tar.gz
[xscreensaver] / hacks / maze.c
index d963ad3e754ac48ef77664ab6eb86d409a66ac18..8576386b2ae9c4aba0af4c135c21830fcef9ce89 100644 (file)
@@ -210,12 +210,17 @@ set_maze_sizes (struct state *st, int width, int height)
 static void
 initialize_maze (struct state *st)
 {
+  int retry_count = 0;
   int i, j, wall;
   int logow = 1 + st->logo_width / st->grid_width;
   int logoh = 1 + st->logo_height / st->grid_height;
   
  AGAIN:
 
+  /* This can happen if the window is really small. Let's not sweat it. */
+  if (++retry_count > 100) return;
+
+
   /* initialize all squares */
   for ( i=0; i<st->maze_size_x; i++) {
     for ( j=0; j<st->maze_size_y; j++) {
@@ -1472,7 +1477,7 @@ maze_init (Display *dpy_arg, Window window_arg)
     st->logo_map = xscreensaver_logo (xgwa.screen, xgwa.visual, st->window,
                                       xgwa.colormap, bg,
                                       &pixels, &npixels, &logo_mask,
-                                      xgwa.width > 800);
+                                      xgwa.width > 800 || xgwa.height > 800);
     if (logo_mask) {
       XSetClipMask (st->dpy, st->logo_gc, logo_mask);
       XFreePixmap (st->dpy, logo_mask);