zmike pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=12467afd40bdae7cf33f4528888130190a25013d
commit 12467afd40bdae7cf33f4528888130190a25013d Author: Mike Blumenkrantz <zm...@samsung.com> Date: Mon Mar 4 13:42:04 2019 -0500 efl.layout.calc: remove list<> usage in FIXME for event Summary: make this an array since there is no need to use a list here anyway ref T7581 Reviewers: cedric Reviewed By: cedric Subscribers: cedric, #reviewers, #committers Tags: #efl_api Maniphest Tasks: T7581 Differential Revision: https://phab.enlightenment.org/D8058 --- src/lib/edje/edje_calc.c | 53 ++++++++++++++++++++++------------------- src/lib/edje/efl_layout_calc.eo | 3 +-- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c index 18dd82d0cb..032ec030f2 100644 --- a/src/lib/edje/edje_calc.c +++ b/src/lib/edje/edje_calc.c @@ -3640,7 +3640,7 @@ _edje_map_prop_set(Evas_Map *map, const Edje_Calc_Params *pf, #define Rel2X 2 #define Rel2Y 3 static Eina_Bool -_circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Eina_List **clist) +_circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Eina_Array *arr) { Edje_Real_Part *rp = NULL; @@ -3654,18 +3654,18 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein if (cep->param1.description->rel1.id_x >= 0) { rp = ed->table_parts[cep->param1.description->rel1.id_x]; - if (_circular_dependency_find(ed, ep, rp, clist)) + if (_circular_dependency_find(ed, ep, rp, arr)) { - *clist = eina_list_prepend(*clist, rp->part->name); + eina_array_push(arr, eina_stringshare_ref(rp->part->name)); return EINA_TRUE; } } if (cep->param1.description->rel2.id_x >= 0) { rp = ed->table_parts[cep->param1.description->rel2.id_x]; - if (_circular_dependency_find(ed, ep, rp, clist)) + if (_circular_dependency_find(ed, ep, rp, arr)) { - *clist = eina_list_prepend(*clist, rp->part->name); + eina_array_push(arr, eina_stringshare_ref(rp->part->name)); return EINA_TRUE; } } @@ -3676,18 +3676,18 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein if (cep->param2->description->rel1.id_x >= 0) { rp = ed->table_parts[cep->param2->description->rel1.id_x]; - if (_circular_dependency_find(ed, ep, rp, clist)) + if (_circular_dependency_find(ed, ep, rp, arr)) { - *clist = eina_list_prepend(*clist, rp->part->name); + eina_array_push(arr, eina_stringshare_ref(rp->part->name)); return EINA_TRUE; } } if (cep->param2->description->rel2.id_x >= 0) { rp = ed->table_parts[cep->param2->description->rel2.id_x]; - if (_circular_dependency_find(ed, ep, rp, clist)) + if (_circular_dependency_find(ed, ep, rp, arr)) { - *clist = eina_list_prepend(*clist, rp->part->name); + eina_array_push(arr, eina_stringshare_ref(rp->part->name)); return EINA_TRUE; } } @@ -3700,18 +3700,18 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein if (cep->param1.description->rel1.id_y >= 0) { rp = ed->table_parts[cep->param1.description->rel1.id_y]; - if (_circular_dependency_find(ed, ep, rp, clist)) + if (_circular_dependency_find(ed, ep, rp, arr)) { - *clist = eina_list_prepend(*clist, rp->part->name); + eina_array_push(arr, eina_stringshare_ref(rp->part->name)); return EINA_TRUE; } } if (cep->param1.description->rel2.id_y >= 0) { rp = ed->table_parts[cep->param1.description->rel2.id_y]; - if (_circular_dependency_find(ed, ep, rp, clist)) + if (_circular_dependency_find(ed, ep, rp, arr)) { - *clist = eina_list_prepend(*clist, rp->part->name); + eina_array_push(arr, eina_stringshare_ref(rp->part->name)); return EINA_TRUE; } } @@ -3721,18 +3721,18 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein if (cep->param2->description->rel1.id_y >= 0) { rp = ed->table_parts[cep->param2->description->rel1.id_y]; - if (_circular_dependency_find(ed, ep, rp, clist)) + if (_circular_dependency_find(ed, ep, rp, arr)) { - *clist = eina_list_prepend(*clist, rp->part->name); + eina_array_push(arr, eina_stringshare_ref(rp->part->name)); return EINA_TRUE; } } if (cep->param2->description->rel2.id_y >= 0) { rp = ed->table_parts[cep->param2->description->rel2.id_y]; - if (_circular_dependency_find(ed, ep, rp, clist)) + if (_circular_dependency_find(ed, ep, rp, arr)) { - *clist = eina_list_prepend(*clist, rp->part->name); + eina_array_push(arr, eina_stringshare_ref(rp->part->name)); return EINA_TRUE; } } @@ -3892,26 +3892,29 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta axes, ep->calculating, faxes, flags); - Eina_List *clist = NULL; - Eina_List *l = NULL; - char *part_name; - char depends_path[PATH_MAX] = ""; + Eina_Array *part_array = eina_array_new(10);; - if (_circular_dependency_find(ed, ep, NULL, &clist)) + if (_circular_dependency_find(ed, ep, NULL, part_array)) { + Eina_Array_Iterator it; + unsigned int i; + char *part_name; + char depends_path[PATH_MAX] = ""; + + efl_event_callback_legacy_call(ed->obj, EFL_LAYOUT_EVENT_CIRCULAR_DEPENDENCY, part_array); strncat(depends_path, ep->part->name, sizeof(depends_path) - strlen(depends_path) - 1); - EINA_LIST_FOREACH(clist, l, part_name) + EINA_ARRAY_ITER_NEXT(part_array, i, part_name, it) { strncat(depends_path, " -> ", sizeof(depends_path) - strlen(depends_path) - 1); strncat(depends_path, part_name, sizeof(depends_path) - strlen(depends_path) - 1); + eina_stringshare_del(part_name); } - efl_event_callback_legacy_call(ed->obj, EFL_LAYOUT_EVENT_CIRCULAR_DEPENDENCY, clist); ERR("Circular dependency in the group '%s' : %s", ed->group, depends_path); - eina_list_free(clist); + eina_array_free(part_array); } #endif return; diff --git a/src/lib/edje/efl_layout_calc.eo b/src/lib/edje/efl_layout_calc.eo index ab43fbbe1f..cf4f45ebde 100644 --- a/src/lib/edje/efl_layout_calc.eo +++ b/src/lib/edje/efl_layout_calc.eo @@ -109,8 +109,7 @@ interface @beta Efl.Layout.Calc } events { recalc: void; [[The layout was recalculated.]] - /* FIXME: The actual type is list<string> but the C# bindings do not support that yet */ - circular,dependency: void; [[A circular dependency between parts of the + circular,dependency: const(array<string>); [[A circular dependency between parts of the object was found.]] } } --