edje_calc: replace eina_stringshare_ref with eina_stringshare_add
Summary: When there is circular dependency in edc, a bunch of CRI log is printed. This patch fixes it. ``` ERR<10159>:edje lib/edje/edje_calc.c:3919 _edje_part_recalc() Circular dependency in the group 'test' : longpartname -> longpartname -> longpartname2 ERR<10159>:edje lib/edje/edje_calc.c:3896 _edje_part_recalc() Circular dependency when calculating part "longpartname". Already calculating XY [03] axes. Need to calculate Y [02] axes CRI<10159>: lib/eina/eina_share_common.c:559 _eina_share_common_node_from_str() *** Eina Magic Check Failed at 0x7fb7c93ebf60 !!! Input handle is wrong type. Expected: 98761254 - Eina Stringshare Node Supplied: 2f736e6f - (unknown) CRI<10159>: lib/eina/eina_share_common.c:559 _eina_share_common_node_from_str() *** Eina Magic Check Failed at 0x7fb7c93ec5d1 !!! Input handle is wrong type. Expected: 98761254 - Eina Stringshare Node Supplied: 5f747261 - (unknown) ``` If string is already stored, `eina_stringshare_add` increase its reference count. Test Plan: test.c ``` //edje_cc test.edc && gcc -o test test.c `pkg-config --libs --cflags elementary` #include <Elementary.h> int main(int argc, char **argv) { elm_init(argc, argv); Evas_Object *win = elm_win_util_standard_add("test", "test"); Evas_Object *layout = elm_layout_add(win); elm_layout_file_set(layout, "./test.edj", "test"); elm_win_resize_object_add(win, layout); evas_object_show(layout); evas_object_resize(win, 200, 200); evas_object_show(win); elm_run(); elm_shutdown(); return 0; } ``` test.edc ``` collections { group { name: "test"; parts { rect { name: "longpartname"; desc { "default"; rel1.to: "longpartname2"; } } rect { name: "longpartname2"; type: RECT; desc { "default"; rel2.to: "longpartname"; } } } } } ``` Reviewers: SanghyeonLee, zmike Reviewed By: SanghyeonLee Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8717
This commit is contained in:
parent
c006589607
commit
0921e4770e
|
@ -3659,7 +3659,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein
|
|||
rp = ed->table_parts[cep->param1.description->rel1.id_x];
|
||||
if (_circular_dependency_find(ed, ep, rp, arr))
|
||||
{
|
||||
eina_array_push(arr, eina_stringshare_ref(rp->part->name));
|
||||
eina_array_push(arr, eina_stringshare_add(rp->part->name));
|
||||
return EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -3668,7 +3668,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein
|
|||
rp = ed->table_parts[cep->param1.description->rel2.id_x];
|
||||
if (_circular_dependency_find(ed, ep, rp, arr))
|
||||
{
|
||||
eina_array_push(arr, eina_stringshare_ref(rp->part->name));
|
||||
eina_array_push(arr, eina_stringshare_add(rp->part->name));
|
||||
return EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -3681,7 +3681,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein
|
|||
rp = ed->table_parts[cep->param2->description->rel1.id_x];
|
||||
if (_circular_dependency_find(ed, ep, rp, arr))
|
||||
{
|
||||
eina_array_push(arr, eina_stringshare_ref(rp->part->name));
|
||||
eina_array_push(arr, eina_stringshare_add(rp->part->name));
|
||||
return EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -3690,7 +3690,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein
|
|||
rp = ed->table_parts[cep->param2->description->rel2.id_x];
|
||||
if (_circular_dependency_find(ed, ep, rp, arr))
|
||||
{
|
||||
eina_array_push(arr, eina_stringshare_ref(rp->part->name));
|
||||
eina_array_push(arr, eina_stringshare_add(rp->part->name));
|
||||
return EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -3705,7 +3705,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein
|
|||
rp = ed->table_parts[cep->param1.description->rel1.id_y];
|
||||
if (_circular_dependency_find(ed, ep, rp, arr))
|
||||
{
|
||||
eina_array_push(arr, eina_stringshare_ref(rp->part->name));
|
||||
eina_array_push(arr, eina_stringshare_add(rp->part->name));
|
||||
return EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -3714,7 +3714,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein
|
|||
rp = ed->table_parts[cep->param1.description->rel2.id_y];
|
||||
if (_circular_dependency_find(ed, ep, rp, arr))
|
||||
{
|
||||
eina_array_push(arr, eina_stringshare_ref(rp->part->name));
|
||||
eina_array_push(arr, eina_stringshare_add(rp->part->name));
|
||||
return EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -3726,7 +3726,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein
|
|||
rp = ed->table_parts[cep->param2->description->rel1.id_y];
|
||||
if (_circular_dependency_find(ed, ep, rp, arr))
|
||||
{
|
||||
eina_array_push(arr, eina_stringshare_ref(rp->part->name));
|
||||
eina_array_push(arr, eina_stringshare_add(rp->part->name));
|
||||
return EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -3735,7 +3735,7 @@ _circular_dependency_find(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part *cep, Ein
|
|||
rp = ed->table_parts[cep->param2->description->rel2.id_y];
|
||||
if (_circular_dependency_find(ed, ep, rp, arr))
|
||||
{
|
||||
eina_array_push(arr, eina_stringshare_ref(rp->part->name));
|
||||
eina_array_push(arr, eina_stringshare_add(rp->part->name));
|
||||
return EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue