[PATCH weston 2/4] gl-renderer: Don't change the region supplied to output repaint

Kristian Høgsberg hoegsberg at gmail.com
Wed Mar 6 08:44:51 PST 2013


On Tue, Mar 05, 2013 at 05:30:28PM +0200, Ander Conselvan de Oliveira wrote:
> The core uses this region to clear from the primary plane damage the
> area that was repainted. If we add the old buffer damage to that, it
> may end up clearing more damage from the primary plane than it was
> intended.
> ---
>  src/gl-renderer.c |   10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/src/gl-renderer.c b/src/gl-renderer.c
> index a5dc2f3..4c1bc23 100644
> --- a/src/gl-renderer.c
> +++ b/src/gl-renderer.c
> @@ -957,6 +957,7 @@ gl_renderer_repaint_output(struct weston_output *output,
>  	EGLBoolean ret;
>  	static int errored;
>  	int32_t width, height, i;
> +	pixman_region32_t total_damage;
>  
>  	width = output->current->width +
>  		output->border.left + output->border.right;
> @@ -987,10 +988,13 @@ gl_renderer_repaint_output(struct weston_output *output,
>  				      &go->buffer_damage[i],
>  				      output_damage);
>  
> -	pixman_region32_union(output_damage, output_damage,
> -			      &go->buffer_damage[go->current_buffer]);
> +	pixman_region32_init(&total_damage);
> +	pixman_region32_copy(&total_damage,
> +			     &go->buffer_damage[go->current_buffer]);

Shouldn't total_damage still be the union of buffer_damage and
output_damage?

> -	repaint_surfaces(output, output_damage);
> +	repaint_surfaces(output, &total_damage);
> +
> +	pixman_region32_fini(&total_damage);
>  
>  	if (gr->border.texture)
>  		draw_border(output);
> -- 
> 1.7.10.4
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list