discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=fac907e0c53bf98d47d2abf293e910ffe1e54e2a
commit fac907e0c53bf98d47d2abf293e910ffe1e54e2a Author: Mike Blumenkrantz <[email protected]> Date: Fri Jul 28 13:49:31 2017 -0400 handle updates_full when adding comp object update regions this flag means that the entire surface should be redrawn ref T5370 --- src/bin/e_comp_object.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 20c0379a9..406de2e3c 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -4078,17 +4078,32 @@ e_comp_object_dirty(Evas_Object *obj) return; } e_comp_object_native_surface_set(obj, 1); - it = eina_tiler_iterator_new(cw->updates); - EINA_ITERATOR_FOREACH(it, rect) + if (cw->updates_full) { - RENDER_DEBUG("UPDATE ADD [%p]: %d %d %dx%d", cw->ec, rect->x, rect->y, rect->w, rect->h); - evas_object_image_data_update_add(cw->obj, rect->x, rect->y, rect->w, rect->h); + Eina_Rectangle r = {0}; + + eina_tiler_area_size_get(cw->updates, &r.w, &r.h); + RENDER_DEBUG("UPDATE ADD [%p]: %d %d %dx%d", cw->ec, r.x, r.y, r.w, r.h); + evas_object_image_data_update_add(cw->obj, r.x, r.y, r.w, r.h); EINA_LIST_FOREACH(cw->obj_mirror, ll, o) - evas_object_image_data_update_add(o, rect->x, rect->y, rect->w, rect->h); + evas_object_image_data_update_add(o, r.x, r.y, r.w, r.h); if (cw->pending_updates) - eina_tiler_rect_add(cw->pending_updates, rect); + eina_tiler_rect_add(cw->pending_updates, &r); + } + else + { + it = eina_tiler_iterator_new(cw->updates); + EINA_ITERATOR_FOREACH(it, rect) + { + RENDER_DEBUG("UPDATE ADD [%p]: %d %d %dx%d", cw->ec, rect->x, rect->y, rect->w, rect->h); + evas_object_image_data_update_add(cw->obj, rect->x, rect->y, rect->w, rect->h); + EINA_LIST_FOREACH(cw->obj_mirror, ll, o) + evas_object_image_data_update_add(o, rect->x, rect->y, rect->w, rect->h); + if (cw->pending_updates) + eina_tiler_rect_add(cw->pending_updates, rect); + } + eina_iterator_free(it); } - eina_iterator_free(it); if (cw->pending_updates) eina_tiler_clear(cw->updates); else --
