From f86d6b7cbd6f81d451b336756f01a00dd98cbb16 Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Thu, 25 Jul 2019 20:44:35 +0100 Subject: [PATCH] backend: update present interface for partial updates Signed-off-by: Yuxuan Shui --- src/backend/backend.c | 2 +- src/backend/backend.h | 10 +++++----- src/backend/gl/glx.c | 2 +- src/backend/xrender/xrender.c | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/backend/backend.c b/src/backend/backend.c index af98791..9a9f7c6 100644 --- a/src/backend/backend.c +++ b/src/backend/backend.c @@ -285,7 +285,7 @@ void paint_all_new(session_t *ps, struct managed_win *t, bool ignore_damage) { if (ps->backend_data->ops->present) { // Present the rendered scene // Vsync is done here - ps->backend_data->ops->present(ps->backend_data); + ps->backend_data->ops->present(ps->backend_data, NULL); } #ifdef DEBUG_REPAINT diff --git a/src/backend/backend.h b/src/backend/backend.h index 4e4a8e6..a5c70d4 100644 --- a/src/backend/backend.h +++ b/src/backend/backend.h @@ -114,8 +114,7 @@ struct backend_operations { void (*prepare)(backend_t *backend_data, const region_t *reg_damage); /** - * Paint the content of an image onto the (possibly buffered) - * target picture. + * Paint the content of an image onto the back buffer * * @param backend_data the backend data * @param image_data the image to paint @@ -134,10 +133,11 @@ struct backend_operations { const region_t *reg_blur, const region_t *reg_visible) attr_nonnull(1, 3, 4, 5); - /// Present the back buffer onto the screen. + /// Present part of the back buffer onto the screen. /// - /// Optional if the screen is not buffered - void (*present)(backend_t *backend_data) attr_nonnull(1); + /// @param region part of the screen that should be updated. if NULL, update the + /// whole screen + void (*present)(backend_t *backend_data, const region_t *region) attr_nonnull(1); /** * Bind a X pixmap to the backend's internal image data structure. diff --git a/src/backend/gl/glx.c b/src/backend/gl/glx.c index 0013d80..2e8ccc5 100644 --- a/src/backend/gl/glx.c +++ b/src/backend/gl/glx.c @@ -436,7 +436,7 @@ err: return NULL; } -static void glx_present(backend_t *base) { +static void glx_present(backend_t *base, const region_t *region attr_unused) { struct _glx_data *gd = (void *)base; gl_present(base); glXSwapBuffers(gd->display, gd->target_win); diff --git a/src/backend/xrender/xrender.c b/src/backend/xrender/xrender.c index 2a07480..0b9f82a 100644 --- a/src/backend/xrender/xrender.c +++ b/src/backend/xrender/xrender.c @@ -301,7 +301,7 @@ static void deinit(backend_t *backend_data) { free(xd); } -static void present(backend_t *base) { +static void present(backend_t *base, const region_t *region attr_unused) { struct _xrender_data *xd = (void *)base; if (xd->vsync) {