diff options
author | Derek Foreman <derek.foreman.samsung@gmail.com> | 2018-10-22 10:33:35 -0500 |
---|---|---|
committer | Derek Foreman <derek.foreman.samsung@gmail.com> | 2018-12-14 09:52:07 -0600 |
commit | 706f377edd5581f66b38b95441eb03fab97401b7 (patch) | |
tree | 534b5ae4acb6e68fceb515842d07b7c28bd0679a | |
parent | 95dce74b85e9e89b946afedc01560a94e9cadf32 (diff) | |
download | efl-706f377edd5581f66b38b95441eb03fab97401b7.tar.gz |
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 <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7195
-rw-r--r-- | src/lib/evas/canvas/evas_render.c | 22 |
1 files changed, 22 insertions, 0 deletions
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); + + } } } |