evas - remove excess data scope lookup during render when getting changed

getting smart changed meant another scope data get when we already had
the protected data in the caller. don't do that and just pass down.
saves a lot of overhead...

@optimize
This commit is contained in:
Carsten Haitzler 2018-10-25 00:29:48 +01:00
parent 9aeedc5a1c
commit 2098f55ba2
3 changed files with 7 additions and 8 deletions

View File

@ -1225,9 +1225,8 @@ _efl_canvas_group_group_change(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED)
}
Eina_Bool
evas_object_smart_changed_get(Evas_Object *eo_obj)
evas_object_smart_changed_get(Evas_Object_Protected_Data *obj)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Eina_Bool has_map = EINA_FALSE;
/* If object is invisible, it's meaningless to figure out changed state
@ -1263,8 +1262,8 @@ evas_object_smart_changed_get(Evas_Object *eo_obj)
{
Evas_Object_Protected_Data *o2;
EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), o2)
if (evas_object_smart_changed_get(o2->object)) return EINA_TRUE;
EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj->object), o2)
if (evas_object_smart_changed_get(o2)) return EINA_TRUE;
}
return EINA_FALSE;

View File

@ -407,7 +407,7 @@ static inline Eina_Bool
_evas_render_object_changed_get(Evas_Object_Protected_Data *obj)
{
if (obj->smart.smart)
return evas_object_smart_changed_get(obj->object);
return evas_object_smart_changed_get(obj);
else
return obj->changed;
}
@ -469,7 +469,7 @@ _evas_render_phase1_direct(Evas_Public_Data *e,
if (obj->proxy->redraw || obj->mask->redraw)
_evas_render_prev_cur_clip_cache_add(e, obj);
if (!obj->smart.smart || evas_object_smart_changed_get(eo_obj))
if (!obj->smart.smart || evas_object_smart_changed_get(obj))
{
/* proxy sources */
if (obj->proxy->proxies || obj->proxy->proxy_textures)
@ -1926,7 +1926,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
changed = EINA_TRUE;
}
if (!changed) changed = evas_object_smart_changed_get(eo_obj);
if (!changed) changed = evas_object_smart_changed_get(obj);
/* mark the old map as invalid, so later we don't reuse it as a
* cache. */

View File

@ -1608,7 +1608,7 @@ void _evas_object_smart_clipped_smart_move_internal(Evas_Object *eo_obj, Evas_Co
void evas_call_smarts_calculate(Evas *e);
void evas_object_smart_bounding_box_update(Evas_Object_Protected_Data *obj);
void evas_object_smart_need_bounding_box_update(Evas_Smart_Data *o, Evas_Object_Protected_Data *obj);
Eina_Bool evas_object_smart_changed_get(Evas_Object *eo_obj);
Eina_Bool evas_object_smart_changed_get(Evas_Object_Protected_Data *obj);
void evas_object_smart_attach(Evas_Object *eo_obj, Evas_Smart *s);
void _evas_post_event_callback_call_real(Evas *e, Evas_Public_Data* e_pd, int min_event_id);
#define _evas_post_event_callback_call(e, pd, id) do { \