X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fdiscrete.c;h=bfb4459a233324d31a0b45d8cb2c332d3498c7e0;hb=39809ded547bdbb08207d3e514950425215b4410;hp=1746f726c2e08653c9c0b79de3ccd92dfd5c2aea;hpb=6f5482d73adb0165c0130bb47d852644ab0c4869;p=xscreensaver diff --git a/hacks/discrete.c b/hacks/discrete.c index 1746f726..bfb4459a 100644 --- a/hacks/discrete.c +++ b/hacks/discrete.c @@ -38,11 +38,13 @@ static const char sccsid[] = "@(#)discrete.c 5.00 2000/11/01 xlockmore"; "*cycles: 2500 \n" \ "*ncolors: 100 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ + "*lowrez: True \n" \ # define SMOOTH_COLORS +# define release_discrete 0 # define discrete_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ -# include "erase.h" #else /* STANDALONE */ # include "xlock.h" /* in xlockmore distribution */ #endif /* STANDALONE */ @@ -54,8 +56,8 @@ ENTRYPOINT ModeSpecOpt discrete_opts = #ifdef USE_MODULES ModStruct discrete_description = -{"discrete", "init_discrete", "draw_discrete", "release_discrete", - "refresh_discrete", "init_discrete", (char *) NULL, &discrete_opts, +{"discrete", "init_discrete", "draw_discrete", (char *) NULL, + "refresh_discrete", "init_discrete", "free_discrete", &discrete_opts, 1000, 4096, 2500, 1, 64, 1.0, "", "Shows various discrete maps", 0, NULL}; @@ -101,10 +103,6 @@ typedef struct { int sqrt_sign, std_sign; -#ifdef STANDALONE - eraser_state *eraser; -#endif - } discretestruct; static discretestruct *discretes = (discretestruct *) NULL; @@ -115,12 +113,7 @@ init_discrete (ModeInfo * mi) double range; discretestruct *hp; - if (discretes == NULL) { - if ((discretes = - (discretestruct *) calloc(MI_NUM_SCREENS(mi), - sizeof (discretestruct))) == NULL) - return; - } + MI_INIT (mi, discretes); hp = &discretes[MI_SCREEN(mi)]; hp->maxx = MI_WIDTH(mi); @@ -249,10 +242,8 @@ init_discrete (ModeInfo * mi) /* if fails will check later */ } -#ifndef STANDALONE /* Clear the background. */ MI_CLEARWINDOW(mi); -#endif XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_WHITE_PIXEL(mi)); hp->count = 0; @@ -405,18 +396,12 @@ draw_discrete (ModeInfo * mi) int cycles = MI_CYCLES(mi); int i; - if (hp->eraser) { - hp->eraser = erase_window (MI_DISPLAY(mi), MI_WINDOW(mi), hp->eraser); - return; - } - for (i = 0; i < 10; i++) { draw_discrete_1 (mi); hp->count++; } if (hp->count > cycles) { - hp->eraser = erase_window (MI_DISPLAY(mi), MI_WINDOW(mi), hp->eraser); init_discrete(mi); } } @@ -432,29 +417,23 @@ reshape_discrete(ModeInfo * mi, int width, int height) } ENTRYPOINT void -release_discrete(ModeInfo * mi) +free_discrete(ModeInfo * mi) { - if (discretes != NULL) { - int screen; - - for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) { - discretestruct *hp = &discretes[screen]; + discretestruct *hp = &discretes[MI_SCREEN(mi)]; - if (hp->pointBuffer != NULL) { - (void) free((void *) hp->pointBuffer); - /* hp->pointBuffer = NULL; */ - } - } - (void) free((void *) discretes); - discretes = (discretestruct *) NULL; + if (hp->pointBuffer != NULL) { + (void) free((void *) hp->pointBuffer); + /* hp->pointBuffer = NULL; */ } } +#ifndef STANDALONE ENTRYPOINT void refresh_discrete(ModeInfo * mi) { MI_CLEARWINDOW(mi); } +#endif XSCREENSAVER_MODULE ("Discrete", discrete)