summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-11-27 16:58:56 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-11-27 16:58:56 +0900
commit6a462f925f7b4bed35692ede4664b876241deb3e (patch)
tree361847b4ebedc403eca7366b4727f9fb2fc21fc3
parentbba368cf79acb5221d108cd257701523bd50ae2a (diff)
downloadefl-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.c33
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)
{