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 <yshuiv7@gmail.com>
This commit is contained in:
parent
de30ef14ae
commit
c387a266dc
|
@ -71,7 +71,7 @@ void paint_all_new(session_t *ps, win *const t, bool ignore_damage) {
|
||||||
// TODO Bind root pixmap
|
// TODO Bind root pixmap
|
||||||
|
|
||||||
if (ps->backend_data->ops->prepare) {
|
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) {
|
if (ps->root_image) {
|
||||||
|
|
|
@ -67,8 +67,8 @@ struct backend_operations {
|
||||||
/// Usually the backend should clear the buffer, or paint a background
|
/// Usually the backend should clear the buffer, or paint a background
|
||||||
/// on the buffer (usually the wallpaper).
|
/// on the buffer (usually the wallpaper).
|
||||||
///
|
///
|
||||||
/// Optional?
|
/// Optional
|
||||||
void (*prepare)(backend_t *backend_data, const region_t *reg_paint);
|
void (*prepare)(backend_t *backend_data, const region_t *reg_damage);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Paint the content of an image onto the (possibly buffered)
|
* Paint the content of an image onto the (possibly buffered)
|
||||||
|
|
|
@ -260,18 +260,6 @@ static void deinit(backend_t *backend_data) {
|
||||||
free(xd);
|
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) {
|
static void present(backend_t *base) {
|
||||||
struct _xrender_data *xd = (void *)base;
|
struct _xrender_data *xd = (void *)base;
|
||||||
|
|
||||||
|
@ -457,7 +445,6 @@ static struct backend_operations xrender_ops = {
|
||||||
.deinit = deinit,
|
.deinit = deinit,
|
||||||
.blur = blur,
|
.blur = blur,
|
||||||
.present = present,
|
.present = present,
|
||||||
.prepare = prepare,
|
|
||||||
.compose = compose,
|
.compose = compose,
|
||||||
.bind_pixmap = bind_pixmap,
|
.bind_pixmap = bind_pixmap,
|
||||||
.release_image = release_image,
|
.release_image = release_image,
|
||||||
|
|
Loading…
Reference in New Issue