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
This commit is contained in:
Derek Foreman 2018-10-22 10:33:35 -05:00
parent 95dce74b85
commit 706f377edd
1 changed files with 22 additions and 0 deletions

View File

@ -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);
}
}
}