From: Mike McCormack Date: Thu, 17 Nov 2011 04:31:43 +0000 (+0000) Subject: [evas] Always clear recalc count of items that have been on calc list X-Git-Tag: submit/devel/efl/20131022.203902~7482 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=997a3aa7563cbc23a0823fa92dd889f439e19f70;p=platform%2Fupstream%2Fefl.git [evas] Always clear recalc count of items that have been on calc list Signed-off-by: Mike McCormack SVN revision: 65326 --- diff --git a/legacy/evas/src/lib/canvas/evas_main.c b/legacy/evas/src/lib/canvas/evas_main.c index c658fb1..0a37b2c 100644 --- a/legacy/evas/src/lib/canvas/evas_main.c +++ b/legacy/evas/src/lib/canvas/evas_main.c @@ -121,6 +121,7 @@ evas_new(void) e->hinting = EVAS_FONT_HINTING_BYTECODE; e->name_hash = eina_hash_string_superfast_new(NULL); eina_clist_init(&e->calc_list); + eina_clist_init(&e->calc_done); #define EVAS_ARRAY_SET(E, Array) \ eina_array_step_set(&E->Array, sizeof (E->Array), 4096); diff --git a/legacy/evas/src/lib/canvas/evas_object_smart.c b/legacy/evas/src/lib/canvas/evas_object_smart.c index 528c0a6..e5c390f 100644 --- a/legacy/evas/src/lib/canvas/evas_object_smart.c +++ b/legacy/evas/src/lib/canvas/evas_object_smart.c @@ -558,6 +558,8 @@ evas_object_smart_need_recalculate_set(Evas_Object *obj, Eina_Bool value) value = !!value; if (value) eina_clist_add_tail(&obj->layer->evas->calc_list, &obj->calc_entry); + else + eina_clist_add_tail(&obj->layer->evas->calc_done, &obj->calc_entry); if (o->need_recalculate == value) return; @@ -630,7 +632,6 @@ evas_smart_objects_calculate_count_get(const Evas *e) void evas_call_smarts_calculate(Evas *e) { - Eina_Clist processed = EINA_CLIST_INIT(processed); Eina_Clist *elem; Evas_Object *obj; @@ -646,7 +647,7 @@ evas_call_smarts_calculate(Evas *e) obj = EINA_CLIST_ENTRY(elem, Evas_Object, calc_entry); eina_clist_remove(&obj->calc_entry); if (obj->delete_me) continue; - eina_clist_add_tail(&processed, &obj->calc_entry); + eina_clist_add_tail(&e->calc_done, &obj->calc_entry); o = obj->object_data; @@ -657,7 +658,7 @@ evas_call_smarts_calculate(Evas *e) } } - while (NULL != (elem = eina_clist_head(&processed))) + while (NULL != (elem = eina_clist_head(&e->calc_done))) { obj = EINA_CLIST_ENTRY(elem, Evas_Object, calc_entry); obj->recalculate_cycle = 0; diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index 2a3f624..90498d0 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -356,6 +356,7 @@ struct _Evas Eina_Array clip_changes; Eina_Clist calc_list; + Eina_Clist calc_done; Eina_List *video_objects; Eina_List *post_events; // free me on evas_free