diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2017-08-31 16:13:01 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2017-09-01 13:42:18 -0400 |
commit | 5a9df96d9c7569e78622911d61ca5c1715fd0235 (patch) | |
tree | 55f7de9471b739ae3f0dee0ebc4b710bd63aee22 | |
parent | 1f555c897e78f2ac219ff22afe0c254675d1d633 (diff) | |
download | efl-5a9df96d9c7569e78622911d61ca5c1715fd0235.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 2b07d3e53c..246205b537 100644 --- a/src/lib/evas/canvas/evas_main.c +++ b/src/lib/evas/canvas/evas_main.c @@ -221,7 +221,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 b02e4a7a94..798dd8a621 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 * |