+static Bool
+get_geometry (Display *dpy, Window window, XRectangle *ret)
+{
+ Atom type;
+ int format;
+ unsigned long nitems, bytesafter;
+ unsigned char *name = 0;
+ Atom atom = XInternAtom (dpy, XA_XSCREENSAVER_IMAGE_GEOMETRY, False);
+ int x, y;
+ unsigned int w, h;
+ if (XGetWindowProperty (dpy, window, atom,
+ 0, 1024, False, XA_STRING,
+ &type, &format, &nitems, &bytesafter,
+ &name)
+ == Success
+ && type != None)
+ {
+ int flags = XParseGeometry ((char *) name, &x, &y, &w, &h);
+ /* Require all four, and don't allow negative positions. */
+ if (flags == (XValue|YValue|WidthValue|HeightValue))
+ {
+ ret->x = x;
+ ret->y = y;
+ ret->width = w;
+ ret->height = h;
+ return True;
+ }
+ else
+ return False;
+ }
+ else
+ return False;
+}
+
+