+void get_root_pixmap()
+{
+ Pixmap ret = None;
+
+ unsigned long *res;
+ int c = 2;
+
+ do {
+ res = server_get_property (server.root_win, server.atom._XROOTPMAP_ID, XA_PIXMAP, 0);
+ if (res) {
+ ret = *((Pixmap*)res);
+ XFree(res);
+ break;
+ }
+ } while (--c > 0);
+ server.root_pmap = ret;
+
+ if (server.root_pmap == None)
+ fprintf(stderr, "pixmap background detection failed\n");
+ else {
+ XGCValues gcv;
+ gcv.ts_x_origin = 0;
+ gcv.ts_y_origin = 0;
+ gcv.fill_style = FillTiled;
+ uint mask = GCTileStipXOrigin | GCTileStipYOrigin | GCFillStyle | GCTile;
+
+ gcv.tile = server.root_pmap;
+ XChangeGC(server.dsp, server.gc, mask, &gcv);
+ }
+}
+
+