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

-- 


Reply via email to