diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2016-11-27 16:58:56 +0900 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2016-11-27 16:58:56 +0900 |
commit | 6a462f925f7b4bed35692ede4664b876241deb3e (patch) | |
tree | 361847b4ebedc403eca7366b4727f9fb2fc21fc3 | |
parent | bba368cf79acb5221d108cd257701523bd50ae2a (diff) | |
download | efl-6a462f925f7b4bed35692ede4664b876241deb3e.tar.gz |
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
-rw-r--r-- | src/lib/evas/canvas/evas_render.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 5cc09ee045..8212b11f3f 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) { |