From c387a266dc6cf57ed6901890df9496dae7672a78 Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Tue, 5 Mar 2019 20:27:03 +0000 Subject: [PATCH] backend interface: prepare is optional Also remove xrender's prepare since it overwrite part of the screen outside the damage region, causing rendering problems. Signed-off-by: Yuxuan Shui --- src/backend/backend.c | 2 +- src/backend/backend.h | 4 ++-- src/backend/xrender.c | 13 ------------- 3 files changed, 3 insertions(+), 16 deletions(-) diff --git a/src/backend/backend.c b/src/backend/backend.c index d3b4ed5a..bfdd02b0 100644 --- a/src/backend/backend.c +++ b/src/backend/backend.c @@ -71,7 +71,7 @@ void paint_all_new(session_t *ps, win *const t, bool ignore_damage) { // TODO Bind root pixmap if (ps->backend_data->ops->prepare) { - ps->backend_data->ops->prepare(ps->backend_data, ®_visible); + ps->backend_data->ops->prepare(ps->backend_data, ®_damage); } if (ps->root_image) { diff --git a/src/backend/backend.h b/src/backend/backend.h index 8aef82cc..03edbf5d 100644 --- a/src/backend/backend.h +++ b/src/backend/backend.h @@ -67,8 +67,8 @@ struct backend_operations { /// Usually the backend should clear the buffer, or paint a background /// on the buffer (usually the wallpaper). /// - /// Optional? - void (*prepare)(backend_t *backend_data, const region_t *reg_paint); + /// Optional + void (*prepare)(backend_t *backend_data, const region_t *reg_damage); /** * Paint the content of an image onto the (possibly buffered) diff --git a/src/backend/xrender.c b/src/backend/xrender.c index d0b2d068..51382b31 100644 --- a/src/backend/xrender.c +++ b/src/backend/xrender.c @@ -260,18 +260,6 @@ static void deinit(backend_t *backend_data) { free(xd); } -static void prepare(backend_t *base, const region_t *reg_paint) { - struct _xrender_data *xd = (void *)base; - - // Paint the root pixmap (i.e. wallpaper) - // Limit the paint area - x_set_picture_clip_region(base->c, xd->back[xd->curr_back], 0, 0, reg_paint); - - xcb_render_composite(base->c, XCB_RENDER_PICT_OP_SRC, xd->root_pict, XCB_NONE, - xd->back[xd->curr_back], 0, 0, 0, 0, 0, 0, xd->target_width, - xd->target_height); -} - static void present(backend_t *base) { struct _xrender_data *xd = (void *)base; @@ -457,7 +445,6 @@ static struct backend_operations xrender_ops = { .deinit = deinit, .blur = blur, .present = present, - .prepare = prepare, .compose = compose, .bind_pixmap = bind_pixmap, .release_image = release_image,