From 706f377edd5581f66b38b95441eb03fab97401b7 Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Mon, 22 Oct 2018 10:33:35 -0500 Subject: [PATCH] evas_render: Render missing bits when plane state changes When we move an object into or off of a plane, we need the scene to be rendered as if the object wasn't there. This adds apprpopriate damage to make that happen. Signed-off-by: Derek Foreman Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D7195 --- src/lib/evas/canvas/evas_render.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index ab3e8616c3..00f2eff473 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -3179,6 +3179,28 @@ _evas_planes(Evas_Public_Data *evas) _evas_object_image_plane_release(eo_obj2, obj2, output); } else break; } + if (evas_object_plane_changed(eo_obj2, obj2)) + { + /* Since we're lifting this object out of the scene graph + * (or putting it back), we need to force redraw of the space + * under it. + */ + _evas_canvas_damage_rectangle_add(NULL, evas, + obj2->cur->geometry.x, + obj2->cur->geometry.y, + obj2->cur->geometry.w, + obj2->cur->geometry.h); + + /* We also need to clean its previously drawn position + * but only if we're removing it */ + if (evas_object_is_on_plane(eo_obj2, obj2)) + _evas_canvas_damage_rectangle_add(NULL, evas, + obj2->prev->geometry.x, + obj2->prev->geometry.y, + obj2->prev->geometry.w, + obj2->prev->geometry.h); + + } } }