#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
+#include <X11/extensions/Xrender.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// add layer of root pixmap (or clear pixmap if real_transparency==true)
if (real_transparency)
clear_pixmap(*pmap, 0 ,0, a->width, a->height);
- else
- XCopyArea (server.dsp, ((Panel *)a->panel)->temp_pmap, *pmap, server.gc, a->posx, a->posy, a->width, a->height, 0, 0);
+ XCopyArea (server.dsp, ((Panel *)a->panel)->temp_pmap, *pmap, server.gc, a->posx, a->posy, a->width, a->height, 0, 0);
cairo_surface_t *cs;
cairo_t *c;
void clear_pixmap(Pixmap p, int x, int y, int w, int h)
{
- cairo_surface_t *tmp = cairo_xlib_surface_create (server.dsp, p, server.visual, w, h);
- cairo_t *cr = cairo_create(tmp);
- cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
- cairo_rectangle(cr, x, y, w, h);
- cairo_set_source_rgba(cr, 1, 1, 1, 0);
- cairo_fill(cr);
- cairo_destroy(cr);
- cairo_surface_destroy (tmp);
+ Picture pict = XRenderCreatePicture(server.dsp, p, XRenderFindVisualFormat(server.dsp, server.visual), 0, 0);
+ XRenderColor col = { .red=0, .green=0, .blue=0, .alpha=0 };
+ XRenderFillRectangle(server.dsp, PictOpSrc, pict, &col, x, y, w, h);
+ XRenderFreePicture(server.dsp, pict);
}