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);
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);
}
}
char *progclass = "Coral";
char *defaults[] = {
- "Coral.background: black",
- "Coral.foreground: white",
- "*density: 25",
- "*seeds: 20", /* too many for 640x480, too few for 1280x1024 */
- "*delay: 5",
- "*delay2: 1000",
- "*eraseSpeed: 400",
- "*eraseMode: -1",
- 0
+ ".background: black",
+ ".foreground: white",
+ "*density: 25",
+ "*seeds: 20", /* too many for 640x480, too few for 1280x1024 */
+ "*delay: 5",
+ "*delay2: 1000",
+ 0
};
XrmOptionDescRec options[] = {
{ "-seeds", ".seeds", XrmoptionSepArg, 0 },
{ "-delay", ".delay", XrmoptionSepArg, 0 },
{ "-delay2", ".delay2", XrmoptionSepArg, 0 },
- { "-erase-speed", ".eraseSpeed", XrmoptionSepArg, 0 },
- { "-erase-mode", ".eraseMode", XrmoptionSepArg, 0 },
{ 0, 0, 0, 0 }
};
while( 1 ) {
init_coral(dpy, window);
coral(dpy, window);
+ screenhack_handle_events (dpy);
if( delay ) sleep(delay);
erase_full_window(dpy, window);
}