X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fjulia.c;h=c41aba517f52844c0fae9172354014a5d62408fe;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hp=d7066b0896e94d2dad8b8d8156423482292330ab;hpb=4ade52359b6eba3621566dac79793a33aa4c915f;p=xscreensaver diff --git a/hacks/julia.c b/hacks/julia.c index d7066b08..c41aba51 100644 --- a/hacks/julia.c +++ b/hacks/julia.c @@ -46,6 +46,7 @@ static const char sccsid[] = "@(#)julia.c 4.03 97/04/10 xlockmore"; "*ignoreRotation: True \n" \ # define UNIFORM_COLORS +# define release_julia 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* !STANDALONE */ # include "xlock.h" /* in xlockmore distribution */ @@ -74,7 +75,7 @@ typedef struct { int nbuffers; int redrawing, redrawpos; Pixmap pixmap; -#ifndef HAVE_COCOA +#ifndef HAVE_JWXYZ Cursor cursor; #endif GC stippledGC; @@ -152,6 +153,8 @@ incr(ModeInfo * mi, juliastruct * jp) } } +static void free_julia (ModeInfo * mi); + ENTRYPOINT void init_julia(ModeInfo * mi) { @@ -161,11 +164,7 @@ init_julia(ModeInfo * mi) XGCValues gcv; int i; - if (julias == NULL) { - if ((julias = (juliastruct *) calloc(MI_NUM_SCREENS(mi), - sizeof (juliastruct))) == NULL) - return; - } + MI_INIT (mi, julias, free_julia); jp = &julias[MI_SCREEN(mi)]; jp->centerx = MI_WIN_WIDTH(mi) / 2; @@ -176,7 +175,7 @@ init_julia(ModeInfo * mi) jp->depth = 10; -#ifndef HAVE_COCOA +#ifndef HAVE_JWXYZ if (jp->button_down_p && !jp->cursor && !jp->cursor) { Pixmap bit; @@ -190,7 +189,7 @@ init_julia(ModeInfo * mi) 0, 0); XFreePixmap (display, bit); } -#endif /* HAVE_COCOA */ +#endif /* HAVE_JWXYZ */ if (jp->pixmap != None && jp->circsize != (MIN(jp->centerx, jp->centery) / 60) * 2 + 1) { @@ -219,14 +218,14 @@ init_julia(ModeInfo * mi) XFreeGC(display, bg_gc); } -#ifndef HAVE_COCOA +#ifndef HAVE_JWXYZ if (MI_WIN_IS_INROOT(mi)) ; else if (jp->circsize > 0) XDefineCursor (display, window, jp->cursor); else XUndefineCursor (display, window); -#endif /* HAVE_COCOA */ +#endif /* HAVE_JWXYZ */ if (!jp->stippledGC) { gcv.foreground = MI_WIN_BLACK_PIXEL(mi); @@ -334,11 +333,11 @@ draw_julia (ModeInfo * mi) /* draw a circle at the c-parameter so you can see it's effect on the structure of the julia set */ XSetForeground(display, jp->stippledGC, MI_WIN_WHITE_PIXEL(mi)); -#ifndef HAVE_COCOA +#ifndef HAVE_JWXYZ XSetTSOrigin(display, jp->stippledGC, new_circle.x, new_circle.y); XSetStipple(display, jp->stippledGC, jp->pixmap); XSetFillStyle(display, jp->stippledGC, FillOpaqueStippled); -#endif /* HAVE_COCOA */ +#endif /* HAVE_JWXYZ */ XDrawArc(display, window, jp->stippledGC, new_circle.x-jp->circsize/2, new_circle.y-jp->circsize/2, @@ -414,35 +413,27 @@ draw_julia (ModeInfo * mi) } } -ENTRYPOINT void -release_julia (ModeInfo * mi) +static void +free_julia (ModeInfo * mi) { - if (julias != NULL) { - int screen; - - for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) { - Display *display = MI_DISPLAY(mi); - juliastruct *jp = &julias[screen]; - int buffer; - - if (jp->pointBuffer) { - for (buffer = 0; buffer < jp->nbuffers; buffer++) - if (jp->pointBuffer[buffer]) - (void) free((void *) jp->pointBuffer[buffer]); - (void) free((void *) jp->pointBuffer); - } - if (jp->stippledGC != None) - XFreeGC(display, jp->stippledGC); - if (jp->pixmap != None) - XFreePixmap(display, jp->pixmap); -#ifndef HAVE_COCOA - if (jp->cursor) - XFreeCursor (display, jp->cursor); -#endif - } - (void) free((void *) julias); - julias = NULL; + Display *display = MI_DISPLAY(mi); + juliastruct *jp = &julias[MI_SCREEN(mi)]; + int buffer; + + if (jp->pointBuffer) { + for (buffer = 0; buffer < jp->nbuffers; buffer++) + if (jp->pointBuffer[buffer]) + (void) free((void *) jp->pointBuffer[buffer]); + (void) free((void *) jp->pointBuffer); } + if (jp->stippledGC != None) + XFreeGC(display, jp->stippledGC); + if (jp->pixmap != None) + XFreePixmap(display, jp->pixmap); +#ifndef HAVE_JWXYZ + if (jp->cursor) + XFreeCursor (display, jp->cursor); +#endif } ENTRYPOINT void