compositor: clear surface damage on draw
authorPekka Paalanen <ppaalanen@gmail.com>
Mon, 6 Feb 2012 10:16:07 +0000 (12:16 +0200)
committerPekka Paalanen <ppaalanen@gmail.com>
Mon, 6 Feb 2012 10:20:02 +0000 (12:20 +0200)
Commit a0d6dc4f26c95ae08ffff7d5f1ee7c1f53bdf545 lost one line of code in
the refactoring, and so did not reset the surface damage on repaint
anymore. This causes damage to only accumulate, leading to a full
display redraw every cycle and hiding damage tracking issues.

Put the damage clear back.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
src/compositor.c

index 3a26424..6b15a54 100644 (file)
@@ -681,6 +681,9 @@ weston_surface_draw(struct weston_surface *es, struct weston_output *output)
                                  &output->region);
        pixman_region32_intersect(&repaint, &repaint, &es->damage);
 
+       /* Clear damage, assume outputs do not overlap. */
+       pixman_region32_subtract(&es->damage, &es->damage, &output->region);
+
        if (!pixman_region32_not_empty(&repaint))
                goto out;