all repos — tint2 @ f2922d7dbde35eadcea78e0536f5f61fb9ca4e39

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

Area: do not destroy pixmap when not necessary
o9000 mrovi9000@gmail.com
commit

f2922d7dbde35eadcea78e0536f5f61fb9ca4e39

parent

61016a93187a66f75a845b222c30639706e22249

1 files changed, 14 insertions(+), 3 deletions(-)

jump to
M src/util/area.csrc/util/area.c

@@ -419,13 +419,24 @@ }

void draw (Area *a) { - if (a->pix) XFreePixmap (server.dsp, a->pix); - a->pix = XCreatePixmap (server.dsp, server.root_win, a->width, a->height, server.depth); + if (a->pix) { + unsigned int d1, width, height; + Window d2; + int d3; + XGetGeometry(server.dsp, server.root_win, &d2, &d3, &d3, &width, &height, &d1, &d1); + if (width != a->width || height != a->height) { + XFreePixmap (server.dsp, a->pix); + a->pix = XCreatePixmap(server.dsp, server.root_win, a->width, a->height, server.depth); + } + } else { + a->pix = XCreatePixmap(server.dsp, server.root_win, a->width, a->height, server.depth); + } // add layer of root pixmap (or clear pixmap if real_transparency==true) if (server.real_transparency) clear_pixmap(a->pix, 0 ,0, a->width, a->height); - XCopyArea (server.dsp, ((Panel *)a->panel)->temp_pmap, a->pix, server.gc, a->posx, a->posy, a->width, a->height, 0, 0); + else + XCopyArea (server.dsp, ((Panel *)a->panel)->temp_pmap, a->pix, server.gc, a->posx, a->posy, a->width, a->height, 0, 0); cairo_surface_t *cs; cairo_t *c;