Detect root pattern with undocumented _XROOTPMAP_ID property
This commit is contained in:
parent
d98b963d75
commit
e142128dde
|
@ -1,3 +1,8 @@
|
|||
2003-11-09 Keith Packard <keithp@keithp.com>
|
||||
|
||||
* xcompmgr.c: (root_tile), (paint_root):
|
||||
Detect root pattern with undocumented _XROOTPMAP_ID property
|
||||
|
||||
2003-11-09 Keith Packard <keithp@keithp.com>
|
||||
|
||||
* Makefile:
|
||||
|
|
52
xcompmgr.c
52
xcompmgr.c
|
@ -35,6 +35,7 @@ int scr;
|
|||
Window root;
|
||||
Picture rootPicture;
|
||||
Picture transPicture;
|
||||
Picture rootTile;
|
||||
XserverRegion allDamage;
|
||||
|
||||
#define WINDOW_PLAIN 0
|
||||
|
@ -285,15 +286,58 @@ find_win (Display *dpy, Window id)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
paint_root (Display *dpy)
|
||||
Picture
|
||||
root_tile (Display *dpy)
|
||||
{
|
||||
Picture picture;
|
||||
Atom actual_type;
|
||||
Pixmap pixmap;
|
||||
int actual_format;
|
||||
unsigned long nitems;
|
||||
unsigned long bytes_after;
|
||||
unsigned char *prop;
|
||||
Bool fill;
|
||||
XRenderPictureAttributes pa;
|
||||
|
||||
if (XGetWindowProperty (dpy, root, XInternAtom (dpy, "_XROOTPMAP_ID", False),
|
||||
0, 4, False, AnyPropertyType,
|
||||
&actual_type, &actual_format, &nitems, &bytes_after, &prop) == Success)
|
||||
{
|
||||
memcpy (&pixmap, prop, 4);
|
||||
XFree (prop);
|
||||
fill = False;
|
||||
}
|
||||
else
|
||||
{
|
||||
pixmap = XCreatePixmap (dpy, root, 1, 1, DefaultDepth (dpy, scr));
|
||||
fill = True;
|
||||
}
|
||||
pa.repeat = True;
|
||||
picture = XRenderCreatePicture (dpy, pixmap,
|
||||
XRenderFindVisualFormat (dpy,
|
||||
DefaultVisual (dpy, scr)),
|
||||
CPRepeat, &pa);
|
||||
if (fill)
|
||||
{
|
||||
XRenderColor c;
|
||||
|
||||
c.red = c.green = c.blue = 0x8080;
|
||||
c.alpha = 0xffff;
|
||||
XRenderFillRectangle (dpy, PictOpSrc, rootPicture, &c,
|
||||
0, 0, 32767, 32767);
|
||||
XRenderFillRectangle (dpy, PictOpSrc, picture, &c,
|
||||
0, 0, 1, 1);
|
||||
}
|
||||
return picture;
|
||||
}
|
||||
|
||||
void
|
||||
paint_root (Display *dpy)
|
||||
{
|
||||
if (!rootTile)
|
||||
rootTile = root_tile (dpy);
|
||||
|
||||
XRenderComposite (dpy, PictOpSrc,
|
||||
rootTile, None, rootPicture,
|
||||
0, 0, 0, 0, 0, 0, 32767, 32767);
|
||||
}
|
||||
|
||||
XserverRegion
|
||||
|
|
Loading…
Reference in New Issue