X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fworm.c;h=452ae12dd4e20b7f4baf7585f205d9903dffda16;hb=39809ded547bdbb08207d3e514950425215b4410;hp=64bef616b3a69a1d200811d33ca2ad293a84e620;hpb=49f5b54f312fe4ac2e9bc47581a72451bd0e8439;p=xscreensaver diff --git a/hacks/worm.c b/hacks/worm.c index 64bef616..452ae12d 100644 --- a/hacks/worm.c +++ b/hacks/worm.c @@ -48,8 +48,11 @@ static const char sccsid[] = "@(#)worm.c 4.04 97/07/28 xlockmore"; "*right3d: red \n" \ "*left3d: blue \n" \ "*both3d: magenta \n" \ - "*none3d: black \n" + "*none3d: black \n" \ + "*fpsSolid: true \n" \ + # define SMOOTH_COLORS +# define release_worm 0 # define reshape_worm 0 # define worm_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ @@ -238,11 +241,16 @@ worm_doit(ModeInfo * mi, int which, unsigned long color) } } -static void -free_worms(wormstruct * wp) +ENTRYPOINT void +free_worm(ModeInfo * mi) { + wormstruct *wp; int wn; + if(!worms) + return; + wp = &worms[MI_SCREEN(mi)]; + if (wp->worm) { for (wn = 0; wn < wp->nw; wn++) { if (wp->worm[wn].circ) @@ -270,11 +278,7 @@ init_worm (ModeInfo * mi) int size = MI_SIZE(mi); int i, j; - if (worms == NULL) { - if ((worms = (wormstruct *) calloc(MI_NUM_SCREENS(mi), - sizeof (wormstruct))) == NULL) - return; - } + MI_INIT (mi, worms); wp = &worms[MI_SCREEN(mi)]; if (MI_NPIXELS(mi) <= 2 || MI_WIN_IS_USE3D(mi)) wp->nc = 2; @@ -283,7 +287,7 @@ init_worm (ModeInfo * mi) if (wp->nc > NUMCOLORS) wp->nc = NUMCOLORS; - free_worms(wp); + free_worm(mi); wp->nw = MI_BATCHCOUNT(mi); if (wp->nw < -MINWORMS) wp->nw = NRAND(-wp->nw - MINWORMS + 1) + MINWORMS; @@ -405,19 +409,7 @@ draw_worm (ModeInfo * mi) wp->chromo = 0; } -ENTRYPOINT void -release_worm(ModeInfo * mi) -{ - if (worms != NULL) { - int screen; - - for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) - free_worms(&worms[screen]); - (void) free((void *) worms); - worms = NULL; - } -} - +#ifndef STANDALONE ENTRYPOINT void refresh_worm (ModeInfo * mi) { @@ -436,5 +428,6 @@ refresh_worm (ModeInfo * mi) } } } +#endif XSCREENSAVER_MODULE ("Worm", worm)