X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fflame.c;h=0cc7f65970fb5f0f8e1ca7d790319e97fb97504c;hb=f65151994eba80ecabcdac6eef6fa0dde7e2d45b;hp=d723f055e8cee09572da6171878936590a477f99;hpb=f3e0240915ed9f9b3a61781f5c7002d587563fe0;p=xscreensaver diff --git a/hacks/flame.c b/hacks/flame.c index d723f055..0cc7f659 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 @@ -167,7 +167,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); */ } } } @@ -175,6 +175,14 @@ recurse (double x, double y, int l, Display *dpy, Window win) { for (i = 0; i < snum; i++) { + + /* Scale back when values get very large. Spot sez: + "I think this happens on HPUX. I think it's non-IEEE + to generate an exception instead of a silent NaN." + */ + if ((abs(x) > 1.0E5) || (abs(y) > 1.0E5)) + x = x / y; + nx = f[0][0][i] * x + f[0][1][i] * y + f[0][2][i]; ny = f[1][0][i] * x + f[1][1][i] * y + f[1][2][i]; if (i < anum) @@ -348,7 +356,7 @@ 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); } @@ -373,8 +381,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", @@ -397,5 +405,8 @@ screenhack (Display *dpy, Window window) { init_flame (dpy, window); while (1) - flame (dpy, window); + { + flame (dpy, window); + screenhack_handle_events (dpy); + } }