bar_alpha.c 846 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. static int useargb = 0;
  2. static Visual *visual;
  3. static int depth;
  4. static Colormap cmap;
  5. void
  6. xinitvisual()
  7. {
  8. XVisualInfo *infos;
  9. XRenderPictFormat *fmt;
  10. int nitems;
  11. int i;
  12. XVisualInfo tpl = {
  13. .screen = screen,
  14. .depth = 32,
  15. .class = TrueColor
  16. };
  17. long masks = VisualScreenMask | VisualDepthMask | VisualClassMask;
  18. infos = XGetVisualInfo(dpy, masks, &tpl, &nitems);
  19. visual = NULL;
  20. for (i = 0; i < nitems; i ++) {
  21. fmt = XRenderFindVisualFormat(dpy, infos[i].visual);
  22. if (fmt->type == PictTypeDirect && fmt->direct.alphaMask) {
  23. visual = infos[i].visual;
  24. depth = infos[i].depth;
  25. cmap = XCreateColormap(dpy, root, visual, AllocNone);
  26. useargb = 1;
  27. break;
  28. }
  29. }
  30. XFree(infos);
  31. if (!visual) {
  32. visual = DefaultVisual(dpy, screen);
  33. depth = DefaultDepth(dpy, screen);
  34. cmap = DefaultColormap(dpy, screen);
  35. }
  36. }