X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fglx%2Fcrackberg.c;h=dcbe481bfa9b47502d36eb2a25784e2d4711f8e6;hp=30af9633440d6e6f27c2c4cfa885583a6db5ad26;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hpb=d6b0217f2417bd19187f0ebc389d6c5c2233b11c diff --git a/hacks/glx/crackberg.c b/hacks/glx/crackberg.c index 30af9633..dcbe481b 100644 --- a/hacks/glx/crackberg.c +++ b/hacks/glx/crackberg.c @@ -11,6 +11,7 @@ "*wireframe: False \n" \ # define refresh_crackberg 0 +# define release_crackberg 0 #undef countof #define countof(x) (sizeof((x))/sizeof((*x))) @@ -1166,23 +1167,19 @@ static inline double drunken_rando(double cur_val, double max, double width) ** */ ENTRYPOINT void reshape_crackberg (ModeInfo *mi, int w, int h); +static void free_crackberg (ModeInfo *mi); ENTRYPOINT void init_crackberg (ModeInfo *mi) { cberg_state *cberg; - if (!cbergs) { - nsubdivs %= 16; /* just in case.. */ + nsubdivs %= 16; /* just in case.. */ - if ( !(cbergs = calloc(MI_NUM_SCREENS(mi), sizeof(cberg_state)))) { - perror(progname); - exit(1); - } + MI_INIT(mi, cbergs, free_crackberg); - if (visibility > 1.0 || visibility < 0.2) { - printf("visibility must be in range [0.2 .. 1.0]\n"); - visibility = 1.0; - } + if (visibility > 1.0 || visibility < 0.2) { + printf("visibility must be in range [0.2 .. 1.0]\n"); + visibility = 1.0; } cberg = &cbergs[MI_SCREEN(mi)]; @@ -1460,19 +1457,12 @@ ENTRYPOINT void draw_crackberg (ModeInfo *mi) } /* uh */ -ENTRYPOINT void release_crackberg (ModeInfo *mi) +static void free_crackberg (ModeInfo *mi) { - if (cbergs) { - int screen; - for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) { - cberg_state *cberg = &cbergs[screen]; - if (cberg->norms) - free(cberg->norms); - free(cberg->heights); - } - free (cbergs); - cbergs = 0; - } + cberg_state *cberg = &cbergs[MI_SCREEN(mi)]; + if (cberg->norms) + free(cberg->norms); + free(cberg->heights); } XSCREENSAVER_MODULE ("Crackberg", crackberg)