From 6a462f925f7b4bed35692ede4664b876241deb3e Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Sun, 27 Nov 2016 16:58:56 +0900 Subject: [PATCH] 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 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) {