X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fserver.c;h=475c0b6272565a74e6e66c9357e3d4f868973f4f;hb=9becd8bd3b513a0bbfe778b2ef88f6d598fdf03a;hp=511eca5d49bbb51f2614a06ac225a2a0b8db7939;hpb=8622308774bcb0569c8ffa1ea3f928b9d20f35b8;p=chaz%2Ftint2 diff --git a/src/server.c b/src/server.c index 511eca5..475c0b6 100644 --- a/src/server.c +++ b/src/server.c @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **************************************************************************/ +#include + #include #include #include @@ -94,6 +96,7 @@ void server_init_atoms () void cleanup_server() { if (name_trayer) free(name_trayer); + XFreeColormap(server.dsp, server.colormap); } @@ -299,3 +302,38 @@ void get_desktops() } +void server_init_visual() +{ + int real_transparency = 0; + XVisualInfo *xvi; + XVisualInfo templ = { .screen=server.screen, .depth=32, .class=TrueColor }; + int nvi; + xvi = XGetVisualInfo(server.dsp, VisualScreenMask|VisualDepthMask|VisualClassMask, &templ, &nvi); + + Visual *visual = 0; + if (xvi) { + int i; + XRenderPictFormat *format; + for (i = 0; i < nvi; i++) { + format = XRenderFindVisualFormat(server.dsp, xvi[i].visual); + if (format->type == PictTypeDirect && format->direct.alphaMask) { + visual = xvi[i].visual; + break; + } + } + } + XFree (xvi); + + if (visual && real_transparency) { + printf("real transparency on... depth: %d\n", server.depth); + server.depth = 32; + server.colormap = XCreateColormap(server.dsp, server.root_win, visual, AllocNone); + server.visual = visual; + } + else { + server.depth = DefaultDepth(server.dsp, server.screen); + printf("real transparency off.... depth: %d\n", server.depth); + server.colormap = DefaultColormap(server.dsp, server.screen); + server.visual = DefaultVisual(server.dsp, server.screen); + } +}