diff --git a/src/bin/edje/edje_cc.h b/src/bin/edje/edje_cc.h index 6a6d79f377..7b794ed0ed 100644 --- a/src/bin/edje/edje_cc.h +++ b/src/bin/edje/edje_cc.h @@ -174,6 +174,7 @@ void data_queue_part_nest_lookup(Edje_Part_Collection *pc, const char *name, void data_queue_copied_part_nest_lookup(Edje_Part_Collection *pc, int *src, int *dest, char **dest2); void data_queue_part_reallocated_lookup(Edje_Part_Collection *pc, const char *name, unsigned char **base, int offset); +void part_lookup_del(Edje_Part_Collection *pc, int *dest); void part_lookup_delete(Edje_Part_Collection *pc, const char *name, int *dest, char **dest2); void data_queue_copied_part_lookup(Edje_Part_Collection *pc, int *src, int *dest); void *data_queue_program_lookup(Edje_Part_Collection *pc, const char *name, int *dest); diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 451c695c81..845aa53ab2 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -4206,13 +4206,13 @@ _part_desc_free(Edje_Part_Collection *pc, { if (!ed) return NULL; - part_lookup_delete(pc, ep->name, &(ed->rel1.id_x), NULL); - part_lookup_delete(pc, ep->name, &(ed->rel1.id_y), NULL); - part_lookup_delete(pc, ep->name, &(ed->rel2.id_x), NULL); - part_lookup_delete(pc, ep->name, &(ed->rel2.id_y), NULL); - part_lookup_delete(pc, ep->name, &(ed->map.id_persp), NULL); - part_lookup_delete(pc, ep->name, &(ed->map.id_light), NULL); - part_lookup_delete(pc, ep->name, &(ed->map.rot.id_center), NULL); + part_lookup_del(pc, &(ed->rel1.id_x)); + part_lookup_del(pc, &(ed->rel1.id_y)); + part_lookup_del(pc, &(ed->rel2.id_x)); + part_lookup_del(pc, &(ed->rel2.id_y)); + part_lookup_del(pc, &(ed->map.id_persp)); + part_lookup_del(pc, &(ed->map.id_light)); + part_lookup_del(pc, &(ed->map.rot.id_center)); switch (ep->type) { @@ -4230,17 +4230,17 @@ _part_desc_free(Edje_Part_Collection *pc, case EDJE_PART_TYPE_TEXT: case EDJE_PART_TYPE_TEXTBLOCK: { - /* Edje_Part_Description_Text *ted = (Edje_Part_Description_Text*) ed; */ + Edje_Part_Description_Text *ted = (Edje_Part_Description_Text*) ed; - /* part_lookup_delete(pc, ep->name, &(ted->text.id_source_part)); */ - /* part_lookup_delete(pc, ep->name, &(ted->text.id_text_source_part)); */ + part_lookup_del(pc, &(ted->text.id_source)); + part_lookup_del(pc, &(ted->text.id_text_source)); break; } case EDJE_PART_TYPE_PROXY: { Edje_Part_Description_Proxy *ped = (Edje_Part_Description_Proxy*) ed; - part_lookup_delete(pc, ep->name, &(ped->proxy.id), NULL); + part_lookup_del(pc, &(ped->proxy.id)); break; } } @@ -4256,10 +4256,10 @@ _part_free(Edje_Part_Collection *pc, Edje_Part *ep) Edje_Part_Parser *epp = (Edje_Part_Parser*)ep; unsigned int j; - part_lookup_delete(pc, ep->name, &(ep->clip_to_id), NULL); - part_lookup_delete(pc, ep->name, &(ep->dragable.confine_id), NULL); - part_lookup_delete(pc, ep->name, &(ep->dragable.threshold_id), NULL); - part_lookup_delete(pc, ep->name, &(ep->dragable.event_id), NULL); + part_lookup_del(pc, &(ep->clip_to_id)); + part_lookup_del(pc, &(ep->dragable.confine_id)); + part_lookup_del(pc, &(ep->dragable.threshold_id)); + part_lookup_del(pc, &(ep->dragable.event_id)); _part_desc_free(pc, ep, ep->default_desc); for (j = 0 ; j < ep->other.desc_count ; j++) diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c index 83a341b2a6..d503663eed 100755 --- a/src/bin/edje/edje_cc_out.c +++ b/src/bin/edje/edje_cc_out.c @@ -2267,6 +2267,25 @@ data_queue_part_reallocated_lookup(Edje_Part_Collection *pc, const char *name, eina_hash_set(part_dest_lookup, &pl->key, list); } +void +part_lookup_del(Edje_Part_Collection *pc, int *dest) +{ + Part_Lookup_Key key; + Part_Lookup *pl = NULL; + Eina_List *list; + key.pc = pc; + key.mem.dest = dest; + key.stable = EINA_TRUE; + + pl = eina_hash_find(part_pc_dest_lookup, &key); + if (!pl) return; + list = eina_hash_find(part_dest_lookup, &pl->key); + if (list) + eina_hash_del(part_dest_lookup, &pl->key, list); + eina_hash_del(part_pc_dest_lookup, &key, pl); +} + + void part_lookup_delete(Edje_Part_Collection *pc, const char *name, int *dest, char **dest2) {