-/* xscreensaver, Copyright (c) 1997, 1998 Jamie Zawinski <jwz@netscape.com>
+/* xscreensaver, Copyright (c) 1997, 1998, 2001, 2003
+ * 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
{
Pixmap p;
XWindowAttributes xgwa;
- XGCValues gcv;
- GC gc;
XGetWindowAttributes (dpy, window, &xgwa);
*widthP = xgwa.width;
*heightP = xgwa.height;
- XClearWindow(dpy, window);
- grab_screen_image(xgwa.screen, window);
p = XCreatePixmap(dpy, window, *widthP, *heightP, xgwa.depth);
- gcv.function = GXcopy;
- gc = XCreateGC (dpy, window, GCFunction, &gcv);
- XCopyArea (dpy, window, p, gc, 0, 0, *widthP, *heightP, 0, 0);
-
- XFreeGC (dpy, gc);
+ XClearWindow(dpy, window);
+ load_random_image (xgwa.screen, window, p);
+ XClearWindow(dpy, window);
return p;
}
x_border = (xgwa.width - (width * GRID_WIDTH)) / 2;
y_border = (xgwa.height - (height * GRID_WIDTH)) / 2;
+ if (width < 4 || height < 4)
+ {
+ fprintf (stderr, "%s: window too small: %dx%d (need at least %dx%d)\n",
+ progname, xgwa.width, xgwa.height,
+ GRID_WIDTH * 4, GRID_HEIGHT * 4);
+ exit (1);
+ }
+
if (!state)
state = (XPoint *) malloc(width * height * sizeof(XPoint));
gc = XCreateGC (dpy, window, 0, &gcv);
char *progclass = "Jigsaw";
char *defaults [] = {
- "*background: Black",
- "*foreground: Gray40",
+ ".background: Black",
+ ".foreground: Gray40",
"*delay: 70000",
"*delay2: 5",
+#ifdef __sgi /* really, HAVE_READ_DISPLAY_EXTENSION */
+ "*visualID: Best",
+#endif
0
};
while (!done())
{
unshuffle(dpy, window);
- XSync (dpy, True);
+ XSync (dpy, False);
+ screenhack_handle_events (dpy);
if (delay) usleep (delay);
}
+ screenhack_handle_events (dpy);
if (delay2)
usleep (delay2 * 1000000);