X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fjigsaw.c;h=6c28205f508f841229a2b300704179e4a42b1adc;hb=96a411663168b0ba5432b407a83be55f3df0c802;hp=afeefc86899b57462b8366590e9929d33e3fd919;hpb=585e1a6717d1dd9b90fbb53acaaae82106354d33;p=xscreensaver diff --git a/hacks/jigsaw.c b/hacks/jigsaw.c index afeefc86..6c28205f 100644 --- a/hacks/jigsaw.c +++ b/hacks/jigsaw.c @@ -1,4 +1,5 @@ -/* xscreensaver, Copyright (c) 1997, 1998 Jamie Zawinski +/* xscreensaver, Copyright (c) 1997, 1998, 2001, 2003 + * 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 @@ -143,20 +144,14 @@ read_screen (Display *dpy, Window window, int *widthP, int *heightP) { 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, NULL); + XClearWindow(dpy, window); return p; } @@ -190,6 +185,14 @@ jigsaw_init(Display *dpy, Window window) 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);