X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fflame.c;h=9d3543c1482db113964cd2b02353064800c75e50;hb=278c59e14c53fd412b734e699bd4f314f766f804;hp=6b243f59d769002924237ca4afbe5176ce9b5503;hpb=5b7bc6e70fb439cf4c4bf771ae9f94077fe4fe08;p=xscreensaver diff --git a/hacks/flame.c b/hacks/flame.c index 6b243f59..9d3543c1 100644 --- a/hacks/flame.c +++ b/hacks/flame.c @@ -1,5 +1,5 @@ -/* xscreensaver, Copyright (c) 1993, 1995, 1996 - * Jamie Zawinski +/* xscreensaver, Copyright (c) 1993, 1995, 1996, 1998 + * Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -52,6 +52,8 @@ #include #include "screenhack.h" +#include /* so we can ignore SIGFPE */ + #define POINT_BUFFER_SIZE 10 #define MAXLEV 4 #define MAXKINDS 10 @@ -100,6 +102,15 @@ init_flame (Display *dpy, Window window) XGCValues gcv; XWindowAttributes xgwa; Colormap cmap; + +#if defined(SIGFPE) && defined(SIG_IGN) + /* No doubt a better fix would be to track down where the NaN is coming + from, and code around that; but this should do. Apparently most systems + (Linux, Solaris, Irix, ...) ignore FPE by default -- but FreeBSD dumps + core by default. */ + signal (SIGFPE, SIG_IGN); +#endif + XGetWindowAttributes (dpy, window, &xgwa); width = xgwa.width; height = xgwa.height; @@ -167,7 +178,7 @@ recurse (double x, double y, int l, Display *dpy, Window win) XDrawPoints (dpy, win, gc, points, num_points, CoordModeOrigin); num_points = 0; /* if (delay) usleep (delay); */ - /* XSync (dpy, True); */ + /* XSync (dpy, False); */ } } } @@ -356,14 +367,17 @@ flame (Display *dpy, Window window) total_points = 0; (void) recurse (0.0, 0.0, 0, dpy, window); XDrawPoints (dpy, window, gc, points, num_points, CoordModeOrigin); - XSync (dpy, True); + XSync (dpy, False); if (delay) usleep (delay); } -#ifdef __hpux +#if defined(__hpux) && defined(PLOSS) /* I don't understand why this is necessary, but I'm told that this program does nothing at all on HP-sUX without it. + + I'm further told that HPUX 11.0 doesn't define PLOSS, and works ok without + this section. Go figure. */ #undef random #undef srandom @@ -381,8 +395,8 @@ int matherr(x) char *progclass = "Flame"; char *defaults [] = { - "Flame.background: black", /* to placate SGI */ - "Flame.foreground: white", + ".background: black", + ".foreground: white", "*colors: 64", "*iterations: 25", "*delay: 50000", @@ -405,5 +419,8 @@ screenhack (Display *dpy, Window window) { init_flame (dpy, window); while (1) - flame (dpy, window); + { + flame (dpy, window); + screenhack_handle_events (dpy); + } }