Upgrading winicon patch to v2.1 ref. #238

This commit is contained in:
bakkeby
2022-03-06 11:38:22 +01:00
parent 5c321794f1
commit adc05c2332
11 changed files with 127 additions and 105 deletions

21
drw.c
View File

@@ -89,9 +89,15 @@ drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h
drw->depth = depth;
drw->cmap = cmap;
drw->drawable = XCreatePixmap(dpy, root, w, h, depth);
#if BAR_WINICON_PATCH
drw->picture = XRenderCreatePicture(dpy, drw->drawable, XRenderFindVisualFormat(dpy, visual), 0, NULL);
#endif // BAR_WINICON_PATCH
drw->gc = XCreateGC(dpy, drw->drawable, 0, NULL);
#else
drw->drawable = XCreatePixmap(dpy, root, w, h, DefaultDepth(dpy, screen));
#if BAR_WINICON_PATCH
drw->picture = XRenderCreatePicture(dpy, drw->drawable, XRenderFindVisualFormat(dpy, DefaultVisual(dpy, screen)), 0, NULL);
#endif // BAR_WINICON_PATCH
drw->gc = XCreateGC(dpy, root, 0, NULL);
#endif // BAR_ALPHA_PATCH
XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMiter);
@@ -107,18 +113,31 @@ drw_resize(Drw *drw, unsigned int w, unsigned int h)
drw->w = w;
drw->h = h;
#if BAR_WINICON_PATCH
if (drw->picture)
XRenderFreePicture(drw->dpy, drw->picture);
#endif // BAR_WINICON_PATCH
if (drw->drawable)
XFreePixmap(drw->dpy, drw->drawable);
#if BAR_ALPHA_PATCH
drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, drw->depth);
#else
#if BAR_WINICON_PATCH
drw->picture = XRenderCreatePicture(drw->dpy, drw->drawable, XRenderFindVisualFormat(drw->dpy, drw->visual), 0, NULL);
#endif // BAR_WINICON_PATCH
#else // !BAR_ALPHA_PATCH
drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, DefaultDepth(drw->dpy, drw->screen));
#if BAR_WINICON_PATCH
drw->picture = XRenderCreatePicture(drw->dpy, drw->drawable, XRenderFindVisualFormat(drw->dpy, DefaultVisual(drw->dpy, drw->screen)), 0, NULL);
#endif // BAR_WINICON_PATCH
#endif // BAR_ALPHA_PATCH
}
void
drw_free(Drw *drw)
{
#if BAR_WINICON_PATCH
XRenderFreePicture(drw->dpy, drw->picture);
#endif // BAR_WINICON_PATCH
XFreePixmap(drw->dpy, drw->drawable);
XFreeGC(drw->dpy, drw->gc);
drw_fontset_free(drw->fonts);