X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fserver.c;h=0f6b083f128d679d62dbe67c5aeb73a1fd5d7d5f;hb=ac7ac9a45e625e754ae8e4aa5a0100097789dcf8;hp=2d7de6e20ec19bc6d799d479fa862fcef4a568a7;hpb=6b74c702453db283862f92320899c571cbc7b357;p=chaz%2Ftint2 diff --git a/src/server.c b/src/server.c index 2d7de6e..0f6b083 100644 --- a/src/server.c +++ b/src/server.c @@ -58,6 +58,7 @@ void server_init_atoms () server.atom._NET_WM_STATE_MAXIMIZED_VERT = XInternAtom (server.dsp, "_NET_WM_STATE_MAXIMIZED_VERT", False); server.atom._NET_WM_STATE_MAXIMIZED_HORZ = XInternAtom (server.dsp, "_NET_WM_STATE_MAXIMIZED_HORZ", False); server.atom._NET_WM_STATE_SHADED = XInternAtom (server.dsp, "_NET_WM_STATE_SHADED", False); + server.atom._NET_WM_STATE_HIDDEN = XInternAtom (server.dsp, "_NET_WM_STATE_HIDDEN", False); server.atom._NET_WM_STATE_BELOW = XInternAtom (server.dsp, "_NET_WM_STATE_BELOW", False); server.atom._NET_WM_STATE_ABOVE = XInternAtom (server.dsp, "_NET_WM_STATE_ABOVE", False); server.atom._NET_WM_STATE_MODAL = XInternAtom (server.dsp, "_NET_WM_STATE_MODAL", False); @@ -92,6 +93,10 @@ void server_init_atoms () server.atom.XdndAware = XInternAtom(server.dsp, "XdndAware", False); server.atom.XdndPosition = XInternAtom(server.dsp, "XdndPosition", False); server.atom.XdndStatus = XInternAtom(server.dsp, "XdndStatus", False); + + server.colormap = 0; + server.monitor = 0; + server.gc = 0; } @@ -328,18 +333,23 @@ void server_init_visual() XFree (xvi); // check composite manager - if (XGetSelectionOwner(server.dsp, server.atom._NET_WM_CM_S0) == None) - real_transparency = 0; - else - real_transparency = 1; + server.composite_manager = XGetSelectionOwner(server.dsp, server.atom._NET_WM_CM_S0); + if (server.colormap) + XFreeColormap(server.dsp, server.colormap); - if (visual && real_transparency) { + if (visual && server.composite_manager != None) { + XSetWindowAttributes attrs; + attrs.event_mask = StructureNotifyMask; + XChangeWindowAttributes (server.dsp, server.composite_manager, CWEventMask, &attrs); + + real_transparency = 1; server.depth = 32; printf("real transparency on... depth: %d\n", server.depth); server.colormap = XCreateColormap(server.dsp, server.root_win, visual, AllocNone); server.visual = visual; } else { + real_transparency = 0; server.depth = DefaultDepth(server.dsp, server.screen); printf("real transparency off.... depth: %d\n", server.depth); server.colormap = DefaultColormap(server.dsp, server.screen);