static int colorindex = 0;
static int colorsloth;
-static XPoint *walkers;
+static XPoint *walkers = 0;
static int nwalkers;
static int width, widthb;
static int height;
-static unsigned int *board;
+static unsigned int *board = 0;
#define getdot(x,y) (board[(y*widthb)+(x>>5)] & (1<<(x & 31)))
#define setdot(x,y) (board[(y*widthb)+(x>>5)] |= (1<<(x & 31)))
width = xgwa.width;
widthb = ((xgwa.width + 31) >> 5);
height = xgwa.height;
+ if (board) free(board);
board = (unsigned int *)calloc(widthb * xgwa.height, sizeof(unsigned int));
if(!board) exit(1);
cmap = xgwa.colormap;
if( density < 1 ) density = 1;
if( density > 100 ) density = 90; /* more like mold than coral */
nwalkers = (width*height*density)/100;
+ if (walkers) free(walkers);
walkers = (XPoint *)calloc(nwalkers, sizeof(XPoint));
if( (XPoint *)0 == walkers ) exit(1);
for( i = 0; i < seeds; i++ ) {
int x, y;
do {
- x = random() % width;
- y = random() % height;
+ x = 1 + random() % (width - 2);
+ y = 1 + random() % (height - 2);
} while( getdot(x, y) );
setdot((x-1), (y-1)); setdot(x, (y-1)); setdot((x+1), (y-1));
XDrawPoints(dpy, window, draw_gc, pointbuf, npoints,
CoordModeOrigin);
npoints = 0;
- XSync(dpy, True);
+ XSync(dpy, False);
}
if (color) {
}
if( 0 == nwalkers ) {
- XSync(dpy, True);
+ XSync(dpy, False);
free(pointbuf);
return;
}
XDrawPoints(dpy, window, draw_gc, pointbuf, npoints,
CoordModeOrigin);
npoints = 0;
- XSync(dpy, True);
+ XSync(dpy, False);
}
+ screenhack_handle_events (dpy);
usleep(delay2);
}
}
while( 1 ) {
init_coral(dpy, window);
coral(dpy, window);
+ screenhack_handle_events (dpy);
if( delay ) sleep(delay);
erase_full_window(dpy, window);
}