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

Ander Conselvan de Oliveira ander.conselvan.de.oliveira at intel.com
Tue Mar 5 07:30:28 PST 2013


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]);
 
-	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



More information about the wayland-devel mailing list