/* -*- mode: C; tab-width: 4 -*-
- * xscreensaver, Copyright (c) 1992, 1993, 1994, 1996, 1997, 1998
+ * xscreensaver, Copyright (c) 1992, 1993, 1994, 1996, 1997, 1998, 2002, 2003
* Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
radius = xgwa.width/8;
}
+ /* never allow the radius to be too close to the min window dimension
+ */
+ if (radius >= xgwa.width * 0.45) radius = xgwa.width * 0.45;
+ if (radius >= xgwa.height * 0.45) radius = xgwa.height * 0.45;
+
+
+ /* -swamp mode consumes vast amounts of memory, proportional to radius --
+ so throttle radius to a small-ish value (60 => ~30MB.)
+ */
+ if (effect == &swamp_thing && radius > 60)
+ radius = 60;
+
if (delay < 0)
delay = 0;
if (radius <= 0)
gcflags |= GCSubwindowMode;
gc = XCreateGC (dpy, window, gcflags, &gcv);
- grab_screen_image (xgwa.screen, window);
+ load_random_image (xgwa.screen, window, window);
buffer_map = 0;
orig_map = XGetImage(dpy, window, 0, 0, xgwa.width, xgwa.height,
ly = i - cy;
lysq = ly * ly;
ny = xy_coo[k].y + i;
+ if (ny >= orig_map->height) ny = orig_map->height-1;
for(j = 0 ; j < 2*radius+speed+2 ; j++) {
lx = j - cx;
dist = lx * lx + lysq;