raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6a462f925f7b4bed35692ede4664b876241deb3e

commit 6a462f925f7b4bed35692ede4664b876241deb3e
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Sun Nov 27 16:58:56 2016 +0900

    evas render - don't do extra if checks or loops if not needed
    
    remove some extra looping and if checkign that is taken care of
    already and just is pointless extra checks in the code creating
    overhead. tiny amounts, but the amount of meaty speedups lef it
    running low, so profiling, reading, working and repeating.
    
    @optimize
---
 src/lib/evas/canvas/evas_render.c | 33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index 5cc09ee..8212b11 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -3055,16 +3055,19 @@ evas_render_updates_internal(Evas *eo_e,
 
    // FIXME: don't add redraw rect for snapshot with no filter applied on
    // Also damage the filter object that use a snapshot.
-   for (i = 0; i < e->snapshot_objects.count; i++)
+   if (!redraw_all)
      {
-        obj = (Evas_Object_Protected_Data 
*)eina_array_data_get(&e->snapshot_objects, i);
+        for (i = 0; i < e->snapshot_objects.count; i++)
+          {
+             obj = (Evas_Object_Protected_Data 
*)eina_array_data_get(&e->snapshot_objects, i);
 
-        if (evas_object_is_visible(obj->object, obj))
-          e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                                  obj->cur->geometry.x,
-                                                  obj->cur->geometry.y,
-                                                  obj->cur->geometry.w,
-                                                  obj->cur->geometry.h);
+             if (evas_object_is_visible(obj->object, obj))
+               e->engine.func->output_redraws_rect_add(e->engine.data.output,
+                                                       obj->cur->geometry.x,
+                                                       obj->cur->geometry.y,
+                                                       obj->cur->geometry.w,
+                                                       obj->cur->geometry.h);
+          }
      }
    eina_evlog("-render_phase4", eo_e, 0.0, NULL);
 
@@ -3089,17 +3092,15 @@ evas_render_updates_internal(Evas *eo_e,
         ent = eina_inarray_nth(&e->active_objects, i);
         obj = ent->obj;
         eo_obj = obj->object;
-        if (UNLIKELY((evas_object_is_opaque(eo_obj, obj) ||
+        if (UNLIKELY(
+                     (!obj->is_smart) &&
+                     (!obj->clip.clipees) &&
+                     (evas_object_is_opaque(eo_obj, obj) ||
                       ((obj->func->has_opaque_rect) &&
                        (obj->func->has_opaque_rect(eo_obj, obj, 
obj->private_data)))) &&
-                     (!obj->mask->is_mask) && (!obj->clip.mask) &&
                      evas_object_is_visible(eo_obj, obj) &&
-                     (!obj->clip.clipees) &&
-                     (obj->cur->visible) &&
-                     (!obj->delete_me) &&
-                     (obj->cur->cache.clip.visible) &&
-                     (!obj->is_smart)))
-          /*     obscuring_objects = eina_list_append(obscuring_objects, obj); 
*/
+                     (!obj->mask->is_mask) && (!obj->clip.mask) &&
+                     (!obj->delete_me)))
           OBJ_ARRAY_PUSH(&e->obscuring_objects, obj);
         if (prepare)
           {

-- 


Reply via email to