pepper: Output backends correctly consume damage region
authorTaekyun Kim <tkq.kim@samsung.com>
Thu, 16 Jul 2015 05:25:14 +0000 (14:25 +0900)
committerTaekyun Kim <tkq.kim@samsung.com>
Thu, 16 Jul 2015 05:44:37 +0000 (14:44 +0900)
Change-Id: I2a7f4edfa01010e1db45efb243a543fe1b77626c

drm/src/drm-output.c
fbdev/src/fbdev-output.c
pepper/src/pepper-output-backend.h
pepper/src/plane.c
wayland/src/wayland-output.c
x11/src/x11-output.c

index 618af5a..b7fb5dc 100644 (file)
@@ -276,11 +276,7 @@ drm_output_repaint(void *o, const pepper_list_t *plane_list)
 
             pepper_renderer_set_target(output->renderer, output->render_target);
             pepper_renderer_repaint_output(output->renderer, output->base, render_list, damage);
-
-            /* NULL means that whole damage region is updated.
-             * If only visible damage region is updated, pass that region to this function
-             * so that pepper core correctly manage remaining damage region. */
-            pepper_plane_subtract_damage_region(plane, NULL);
+            pepper_plane_clear_damage_region(plane);
 
             update_back_buffer(output);
 
index eb20a24..eb68d9d 100644 (file)
@@ -194,6 +194,7 @@ fbdev_output_repaint(void *o, const pepper_list_t *plane_list)
             pixman_region32_t   *damage = pepper_plane_get_damage_region(plane);
 
             pepper_renderer_repaint_output(output->renderer, output->base, render_list, damage);
+            pepper_plane_clear_damage_region(plane);
 
             /* FIXME: composite with damage? */
             if (output->use_shadow)
index 223f3d2..082e455 100644 (file)
@@ -63,6 +63,9 @@ PEPPER_API void
 pepper_plane_subtract_damage_region(pepper_plane_t *plane, pixman_region32_t *damage);
 
 PEPPER_API void
+pepper_plane_clear_damage_region(pepper_plane_t *plane);
+
+PEPPER_API void
 pepper_view_assign_plane(pepper_view_t *view, pepper_output_t *output, pepper_plane_t *plane);
 
 PEPPER_API void
index d1f13ef..f2d7e4f 100644 (file)
@@ -146,3 +146,9 @@ pepper_plane_subtract_damage_region(pepper_plane_t *plane, pixman_region32_t *da
 {
     pixman_region32_subtract(&plane->damage_region, &plane->damage_region, damage);
 }
+
+PEPPER_API void
+pepper_plane_clear_damage_region(pepper_plane_t *plane)
+{
+    pixman_region32_clear(&plane->damage_region);
+}
index fc5623c..1105463 100644 (file)
@@ -197,6 +197,7 @@ wayland_output_repaint(void *o, const pepper_list_t *plane_list)
                 output->render_pre(output);
 
             pepper_renderer_repaint_output(output->renderer, output->base, render_list, damage);
+            pepper_plane_clear_damage_region(plane);
 
             if (output->render_post)
                 output->render_post(output);
index f04a2d3..2dba69d 100644 (file)
@@ -473,6 +473,7 @@ x11_output_repaint(void *o, const pepper_list_t *plane_list)
 
             pepper_renderer_set_target(output->renderer, output->target);
             pepper_renderer_repaint_output(output->renderer, output->base, render_list, damage);
+            pepper_plane_clear_damage_region(plane);
 
             if (output->renderer == output->connection->pixman_renderer)
             {