You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
846 B
44 lines
846 B
3 years ago
|
|
||
|
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);
|
||
|
}
|
||
|
}
|
||
|
|