XGetWindowAttributes(server.dsp, id, &attr);
unsigned long mask = 0;
XSetWindowAttributes set_attr;
+// printf("icon with depth: %d\n", attr.depth);
if (attr.depth != server.depth || systray.alpha != 100 || systray.brightness != 0 || systray.saturation != 0 ) {
set_attr.colormap = attr.colormap;
set_attr.background_pixel = 0;
void systray_render_icon_now(void* t)
{
+ // we end up in this function only in real transparency mode or if systray_task_asb != 100 0 0
TrayWindow* traywin = t;
traywin->render_timeout = 0;
Pixmap tmp_pmap = XCreatePixmap(server.dsp, server.root_win, traywin->width, traywin->height, server.depth);
XRenderPictFormat* f;
if (traywin->depth == 24)
- f = XRenderFindVisualFormat(server.dsp, DefaultVisual(server.dsp, 0));
- else
+ f = XRenderFindStandardFormat(server.dsp, PictStandardRGB24);
+ else if (traywin->depth == 32)
f = XRenderFindStandardFormat(server.dsp, PictStandardARGB32);
+ else {
+ printf("Strange tray icon found with depth: %d\n", traywin->depth);
+ return;
+ }
Picture pict_image = XRenderCreatePicture(server.dsp, traywin->tray_id, f, 0, 0);
Picture pict_drawable = XRenderCreatePicture(server.dsp, tmp_pmap, XRenderFindVisualFormat(server.dsp, server.visual), 0, 0);
XRenderComposite(server.dsp, PictOpSrc, pict_image, None, pict_drawable, 0, 0, 0, 0, 0, 0, traywin->width, traywin->height);