/* -*- mode: C; tab-width: 4 -*-
- * xscreensaver, Copyright (c) 1992, 1993, 1994, 1996, 1997, 1998
- * Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1992-2005 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
if (get_boolean_resource("bounce", "Boolean"))
effect = &move_lense;
+ XGetWindowAttributes (dpy, window, &xgwa);
+
if (effect == NULL && radius == 0 && speed == 0 && number == 0
&& !blackhole && !vortex && !magnify && !reflect) {
/* if no cmdline options are given, randomly choose one of:
abort(); break;
}
+ /* but if the window is small, reduce default radius */
+ if (xgwa.width < radius * 8)
+ 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)
if (draw == NULL)
draw = &plain_draw;
- XGetWindowAttributes (dpy, window, &xgwa);
black_pixel = BlackPixelOfScreen( xgwa.screen );
gcv.function = GXcopy;
gcflags |= GCSubwindowMode;
gc = XCreateGC (dpy, window, gcflags, &gcv);
- grab_screen_image (xgwa.screen, window);
+ load_random_image (xgwa.screen, window, window, NULL, NULL);
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;
"*visualID: Best",
#endif
- "*delay: 1000",
+ "*delay: 20000",
"*radius: 0",
"*speed: 0",
"*number: 0",