diff --git a/legacy/evas/src/lib/canvas/evas_main.c b/legacy/evas/src/lib/canvas/evas_main.c index 05fce4f17f..a1eb03599d 100644 --- a/legacy/evas/src/lib/canvas/evas_main.c +++ b/legacy/evas/src/lib/canvas/evas_main.c @@ -249,8 +249,6 @@ evas_free(Evas *e) eina_array_flush(&e->calculate_objects); eina_array_flush(&e->clip_changes); - eina_list_free(e->calc_list); - e->magic = 0; free(e); } diff --git a/legacy/evas/src/lib/canvas/evas_object_smart.c b/legacy/evas/src/lib/canvas/evas_object_smart.c index f45bc662b4..979a97cce1 100644 --- a/legacy/evas/src/lib/canvas/evas_object_smart.c +++ b/legacy/evas/src/lib/canvas/evas_object_smart.c @@ -10,8 +10,7 @@ struct _Evas_Object_Smart void *engine_data; void *data; Eina_List *callbacks; - Eina_Inlist *contained; - Eina_List *calc_node; + Eina_Inlist *contained; Evas_Smart_Cb_Description_Array callbacks_descriptions; int walking_list; Eina_Bool deletions_waiting : 1; @@ -549,38 +548,7 @@ evas_object_smart_need_recalculate_set(Evas_Object *obj, Eina_Bool value) return; MAGIC_CHECK_END(); - // XXX: do i need this? - if (obj->delete_me) return; - value = !!value; - if (value) - { - Evas *e = obj->layer->evas; - - if (o->need_recalculate) - { - if ((o->calc_node) && (e->calc_list_current != o->calc_node)) - e->calc_list = eina_list_demote_list(e->calc_list, - o->calc_node); - else - e->calc_list = eina_list_append(e->calc_list, obj); - } - else - e->calc_list = eina_list_append(e->calc_list, obj); - o->calc_node = eina_list_last(e->calc_list); - } - else - { - Evas *e = obj->layer->evas; - - if (o->need_recalculate) - { - if ((o->calc_node) && (e->calc_list_current != o->calc_node)) - e->calc_list = eina_list_remove_list(e->calc_list, - o->calc_node); - o->calc_node = NULL; - } - } if (o->need_recalculate == value) return; @@ -600,14 +568,11 @@ evas_object_smart_need_recalculate_set(Evas_Object *obj, Eina_Bool value) * XXX: on _evas_render_call_smart_calculate() will check for the flag * XXX: and it will be unset after the first. */ - -/* if (o->need_recalculate) { Evas *e = obj->layer->evas; eina_array_push(&e->calculate_objects, obj); } - */ /* TODO: else, remove from array */ } @@ -673,31 +638,31 @@ evas_call_smarts_calculate(Evas *e) { Eina_Array *calculate; Evas_Object *obj; - Eina_List *l; + Eina_Array_Iterator it; + unsigned int i; -// printf("+CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALC-----------v\n"); evas_event_freeze(e); e->in_smart_calc++; - - EINA_LIST_FOREACH(e->calc_list, l, obj) + calculate = &e->calculate_objects; + for (i = 0; i < eina_array_count_get(calculate); ++i) { - Evas_Object_Smart *o = obj->object_data; - - if (obj->delete_me) continue; - e->calc_list_current = l; + Evas_Object_Smart *o; + + obj = eina_array_data_get(calculate, i); + if (obj->delete_me) + continue; + + o = obj->object_data; if (o->need_recalculate) { o->need_recalculate = 0; obj->smart.smart->smart_class->calculate(obj); } - if (o->calc_node == l) o->calc_node = NULL; - e->calc_list_current = NULL; } - EINA_LIST_FREE(e->calc_list, obj) + EINA_ARRAY_ITER_NEXT(calculate, i, obj, it) { obj->recalculate_cycle = 0; } - e->calc_list_current = NULL; e->in_smart_calc--; if (e->in_smart_calc == 0) { @@ -706,7 +671,6 @@ evas_call_smarts_calculate(Evas *e) } evas_event_thaw(e); evas_event_thaw_eval(e); -// printf("-CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALC-----------^\n"); } EAPI void @@ -767,19 +731,13 @@ evas_object_smart_cleanup(Evas_Object *obj) o = (Evas_Object_Smart *)(obj->object_data); if (o->magic == MAGIC_OBJ_SMART) { - Evas *e = obj->layer->evas; - - if ((o->calc_node) && (e->calc_list_current != o->calc_node)) - e->calc_list = eina_list_remove_list(e->calc_list, - o->calc_node); - o->calc_node = NULL; while (o->contained) - evas_object_smart_member_del((Evas_Object *)o->contained); + evas_object_smart_member_del((Evas_Object *)o->contained); while (o->callbacks) { Evas_Smart_Callback *cb; - + cb = o->callbacks->data; o->callbacks = eina_list_remove(o->callbacks, cb); if (cb->event) eina_stringshare_del(cb->event); diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index 7eeee994f9..b183c87c67 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -305,9 +305,6 @@ struct _Evas Eina_Array calculate_objects; Eina_Array clip_changes; - Eina_List *calc_list; - Eina_List *calc_list_current; - Eina_List *post_events; // free me on evas_free Evas_Callbacks *callbacks;