static int plugin_id;
+/* if defined, it will not use double buffering */
+#undef MONITOR_REPAINT
+
typedef struct {
void (*screen_paint)(d_screen_t *sc);
void (*screen_root_pixmap_change)(d_screen_t *sc);
sc->super.root, sc->super.width_in_pixels,
sc->super.height_in_pixels);
d->overlay_buffer = xcb_generate_id(sc->dpy->conn);
+#ifdef MONITOR_REPAINT
+ xcb_render_create_picture(sc->dpy->conn,
+ d->overlay_buffer, sc->overlay, d->root_format,
+ 0, NULL);
+#else
xcb_render_create_picture(sc->dpy->conn, d->overlay_buffer, px,
d->root_format, 0, 0);
+#endif
xcb_free_pixmap(sc->dpy->conn, px);
d->solid_bg = solid_picture(d, sc, 0xffff, 0x6060, 02020, 0x3030);
wd->alpha_picture, c, 1, &rect);
a = d->shadowalpha;
a = a * window_get_opacity(w) / 0xffff;
- //if (w->id == 0x1811453)
- // printf("window opacity 0x%x\n", c.alpha);
c.alpha = a;
- if (w->id == 0x1811453)
- printf("shadow opacity 0x%04x\n", c.alpha);
xcb_render_fill_rectangles(w->sc->dpy->conn,
XCB_RENDER_PICT_OP_SRC,
wd->shadow_picture, c, 1, &rect);
}
}
+ xcb_xfixes_set_picture_clip_region(sc->dpy->conn,
+ d->overlay_buffer,
+ d->paint_region,
+ 0, 0);
paint_root(sc, d);
for (it = list_bottom(sc->stacking); it; it = it->prev) {
0, 0);
/* copy the double buffer to the overlay window */
+#ifndef MONITOR_REPAINT
xcb_render_composite(sc->dpy->conn,
XCB_RENDER_PICT_OP_SRC,
d->overlay_buffer,
0, 0,
sc->super.width_in_pixels,
sc->super.height_in_pixels);
+#endif
/* empty the damaged region */
xcb_xfixes_subtract_region(sc->dpy->conn, d->all_region,