X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fmaze.c;h=10704fa77f90f852440a3e3cbb6afe17b70adb51;hb=dba664f31aa87285db4d76cf8c5e66335299703a;hp=d963ad3e754ac48ef77664ab6eb86d409a66ac18;hpb=7b34ef992563d7bcbb64cc5597dc45fa24470b05;p=xscreensaver diff --git a/hacks/maze.c b/hacks/maze.c index d963ad3e..10704fa7 100644 --- a/hacks/maze.c +++ b/hacks/maze.c @@ -93,10 +93,11 @@ #include /* #include */ +/* #define gray1_width 2 #define gray1_height 2 static const char gray1_bits[] = { 0x01, 0x02 }; - +*/ #define MAX_MAZE_SIZE_X 1000 #define MAX_MAZE_SIZE_Y 1000 @@ -210,12 +211,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; imaze_size_x; i++) { for ( j=0; jmaze_size_y; j++) { @@ -1472,7 +1478,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); @@ -1583,6 +1589,9 @@ maze_draw (Display *dpy, Window window, void *closure) st->stop = 0; st->state = 1; + if (st->solve_state && st->solve_state->running) + st->solve_state->running = 0; + st->sync_p = ((random() % 4) != 0); size = get_integer_resource (st->dpy, "gridSize", "Dimension");