diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2017-08-31 15:03:23 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2017-09-01 13:43:31 -0400 |
commit | f69be30bb6c08a2959cc3f224eac7a44ace0f2a9 (patch) | |
tree | c43e8b3f564b642a2114e0916edd53c5af588487 | |
parent | 59fa359880711c426b0fab71d35e45699aeb392c (diff) | |
download | efl-f69be30bb6c08a2959cc3f224eac7a44ace0f2a9.tar.gz |
evas: handle object names with a list hash
a canvas can have multiple objects with the same name. assuming that name:obj
is a 1:1 ratio means that name-finding functions are likely to return invalid
objects
@fix
-rw-r--r-- | src/lib/evas/canvas/evas_main.c | 2 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_name.c | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c index 1a6f22a337..45cd107528 100644 --- a/src/lib/evas/canvas/evas_main.c +++ b/src/lib/evas/canvas/evas_main.c @@ -217,7 +217,7 @@ _evas_canvas_efl_object_constructor(Eo *eo_obj, Evas_Public_Data *e) e->framespace.h = 0; e->hinting = EVAS_FONT_HINTING_BYTECODE; e->current_event = EVAS_CALLBACK_LAST; - e->name_hash = eina_hash_string_superfast_new(NULL); + e->name_hash = eina_hash_string_superfast_new((Eina_Free_Cb)eina_list_free); eina_clist_init(&e->calc_list); eina_clist_init(&e->calc_done); diff --git a/src/lib/evas/canvas/evas_name.c b/src/lib/evas/canvas/evas_name.c index 1e75884894..a7473be92b 100644 --- a/src/lib/evas/canvas/evas_name.c +++ b/src/lib/evas/canvas/evas_name.c @@ -10,7 +10,7 @@ evas_object_name_set(Evas_Object *eo_obj, const char *name) if (obj->name) { if (obj->layer && obj->layer->evas && obj->layer->evas->name_hash) - eina_hash_del(obj->layer->evas->name_hash, obj->name, eo_obj); + eina_hash_list_remove(obj->layer->evas->name_hash, obj->name, eo_obj); free(obj->name); } if (!name) obj->name = NULL; @@ -18,7 +18,7 @@ evas_object_name_set(Evas_Object *eo_obj, const char *name) { obj->name = strdup(name); if (obj->layer && obj->layer->evas && obj->layer->evas->name_hash) - eina_hash_add(obj->layer->evas->name_hash, obj->name, eo_obj); + eina_hash_list_prepend(obj->layer->evas->name_hash, obj->name, eo_obj); } } @@ -35,7 +35,7 @@ EOLIAN Evas_Object* _evas_canvas_object_name_find(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, const char *name) { if (!name) return NULL; - else return (Evas_Object *)eina_hash_find(e->name_hash, name); + else return eina_list_data_get(eina_hash_find(e->name_hash, name)); } static Evas_Object * |