"*cycles: 100 \n" \
"*ncolors: 64 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
+ "*lowrez: True \n" \
# define BRIGHT_COLORS
+# define release_sierpinski 0
# define reshape_sierpinski 0
# define sierpinski_handle_event 0
# include "xlockmore.h" /* in xscreensaver distribution */
#ifdef USE_MODULES
ModStruct sierpinski_description =
-{"sierpinski", "init_sierpinski", "draw_sierpinski", "release_sierpinski",
- "refresh_sierpinski", "init_sierpinski", (char *) NULL, &sierpinski_opts,
+{"sierpinski", "init_sierpinski", "draw_sierpinski", (char *) NULL,
+ "refresh_sierpinski", "init_sierpinski", "free_sierpinski", &sierpinski_opts,
400000, 2000, 100, 1, 64, 1.0, "",
"Shows Sierpinski's triangle", 0, NULL};
MI_CLEARWINDOW(mi);
}
-static void
-free_sierpinski(sierpinskistruct *sp)
+ENTRYPOINT void
+free_sierpinski(ModeInfo * mi)
{
+ sierpinskistruct *sp = &tris[MI_SCREEN(mi)];
int corner;
for (corner = 0; corner < MAXCORNERS; corner++)
int i;
sierpinskistruct *sp;
- if (tris == NULL) {
- if ((tris = (sierpinskistruct *) calloc(MI_NUM_SCREENS(mi),
- sizeof (sierpinskistruct))) == NULL)
- return;
- }
+ MI_INIT (mi, tris);
sp = &tris[MI_SCREEN(mi)];
sp->width = MI_WIDTH(mi);
if (!sp->pointBuffer[i])
if ((sp->pointBuffer[i] = (XPoint *) malloc(sp->total_npoints *
sizeof (XPoint))) == NULL) {
- free_sierpinski(sp);
+ free_sierpinski(mi);
return;
}
}
startover(mi);
}
-ENTRYPOINT void
-release_sierpinski(ModeInfo * mi)
-{
- if (tris != NULL) {
- int screen;
-
- for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++)
- free_sierpinski(&tris[screen]);
- (void) free((void *) tris);
- tris = (sierpinskistruct *) NULL;
- }
-}
-
+#ifndef STANDALONE
ENTRYPOINT void
refresh_sierpinski(ModeInfo * mi)
{
MI_CLEARWINDOW(mi);
}
+#endif
XSCREENSAVER_MODULE ("Sierpinski", sierpinski)