44 lines
846 B
C
44 lines
846 B
C
|
|
static int useargb = 0;
|
|
static Visual *visual;
|
|
static int depth;
|
|
static Colormap cmap;
|
|
|
|
void
|
|
xinitvisual()
|
|
{
|
|
XVisualInfo *infos;
|
|
XRenderPictFormat *fmt;
|
|
int nitems;
|
|
int i;
|
|
|
|
XVisualInfo tpl = {
|
|
.screen = screen,
|
|
.depth = 32,
|
|
.class = TrueColor
|
|
};
|
|
long masks = VisualScreenMask | VisualDepthMask | VisualClassMask;
|
|
|
|
infos = XGetVisualInfo(dpy, masks, &tpl, &nitems);
|
|
visual = NULL;
|
|
for (i = 0; i < nitems; i ++) {
|
|
fmt = XRenderFindVisualFormat(dpy, infos[i].visual);
|
|
if (fmt->type == PictTypeDirect && fmt->direct.alphaMask) {
|
|
visual = infos[i].visual;
|
|
depth = infos[i].depth;
|
|
cmap = XCreateColormap(dpy, root, visual, AllocNone);
|
|
useargb = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
XFree(infos);
|
|
|
|
if (!visual) {
|
|
visual = DefaultVisual(dpy, screen);
|
|
depth = DefaultDepth(dpy, screen);
|
|
cmap = DefaultColormap(dpy, screen);
|
|
}
|
|
}
|
|
|