From 4e84f7dd32b54a05eabd23839e1e6ac14459712e Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Tue, 4 Apr 2017 17:54:29 +0100 Subject: [PATCH] compositor-drm: Reshuffle drm_output_render Call drm_output_render unconditionally, doing an early exit if we're already rendering a client buffer on the primary plane. Signed-off-by: Daniel Stone Reviewed-by: Pekka Paalanen --- libweston/compositor-drm.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c index 44c2105f..835c9ca5 100644 --- a/libweston/compositor-drm.c +++ b/libweston/compositor-drm.c @@ -752,6 +752,11 @@ drm_output_render(struct drm_output *output, pixman_region32_t *damage) struct weston_compositor *c = output->base.compositor; struct drm_backend *b = to_drm_backend(c); + /* If we already have a client buffer promoted to scanout, then we don't + * want to render. */ + if (output->fb_pending) + return; + if (b->use_pixman) drm_output_render_pixman(output, damage); else @@ -823,8 +828,7 @@ drm_output_repaint(struct weston_output *output_base, if (output->disable_pending || output->destroy_pending) return -1; - if (!output->fb_pending) - drm_output_render(output, damage); + drm_output_render(output, damage); if (!output->fb_pending) return -1;