Eobj: Use xref.

SVN revision: 70275
This commit is contained in:
Tom Hacohen 2012-04-17 15:36:41 +00:00
parent ff0482180f
commit f4fd7944b7
2 changed files with 6 additions and 9 deletions

View File

@ -69,12 +69,12 @@ _visibility_set(Eobj *obj, void *class_data __UNUSED__, va_list *list)
} }
static void static void
_child_add(Eobj *obj __UNUSED__, void *class_data, va_list *list) _child_add(Eobj *obj, void *class_data, va_list *list)
{ {
Widget_Data *wd = class_data; Widget_Data *wd = class_data;
Eobj *child; Eobj *child;
child = va_arg(*list, Eobj *); child = va_arg(*list, Eobj *);
wd->children = eina_list_append(wd->children, eobj_ref(child)); wd->children = eina_list_append(wd->children, eobj_xref(child, obj));
} }
static void static void
@ -98,7 +98,7 @@ _destructor(Eobj *obj, void *class_data)
Eobj *child; Eobj *child;
EINA_LIST_FREE(wd->children, child) EINA_LIST_FREE(wd->children, child)
{ {
eobj_del(child); eobj_xunref(child, obj);
} }
} }

View File

@ -880,10 +880,7 @@ eobj_unref(Eobj *obj)
Eobj *emb_obj; Eobj *emb_obj;
EINA_LIST_FOREACH_SAFE(obj->composite_objects, itr, itr_n, emb_obj) EINA_LIST_FOREACH_SAFE(obj->composite_objects, itr, itr_n, emb_obj)
{ {
/* FIXME: Should probably be unref. */ eobj_composite_object_detach(obj, emb_obj);
eobj_del(emb_obj);
obj->composite_objects =
eina_list_remove_list(obj->composite_objects, itr);
} }
_eobj_callback_remove_all(obj); _eobj_callback_remove_all(obj);
@ -1078,7 +1075,7 @@ eobj_shutdown(void)
EAPI void EAPI void
eobj_composite_object_attach(Eobj *obj, Eobj *emb_obj) eobj_composite_object_attach(Eobj *obj, Eobj *emb_obj)
{ {
eobj_ref(emb_obj); eobj_xref(emb_obj, obj);
obj->composite_objects = eina_list_prepend(obj->composite_objects, emb_obj); obj->composite_objects = eina_list_prepend(obj->composite_objects, emb_obj);
} }
@ -1086,7 +1083,7 @@ EAPI void
eobj_composite_object_detach(Eobj *obj, Eobj *emb_obj) eobj_composite_object_detach(Eobj *obj, Eobj *emb_obj)
{ {
obj->composite_objects = eina_list_remove(obj->composite_objects, emb_obj); obj->composite_objects = eina_list_remove(obj->composite_objects, emb_obj);
eobj_unref(emb_obj); eobj_xunref(emb_obj, obj);
} }
EAPI Eina_Bool EAPI Eina_Bool