summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2017-08-31 15:03:23 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2017-09-01 13:43:31 -0400
commitf69be30bb6c08a2959cc3f224eac7a44ace0f2a9 (patch)
treec43e8b3f564b642a2114e0916edd53c5af588487
parent59fa359880711c426b0fab71d35e45699aeb392c (diff)
downloadefl-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.c2
-rw-r--r--src/lib/evas/canvas/evas_name.c6
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 *