Revert "Eo base: Change parent_set to be an assignment of ref."

Damn, this breaks some things. Reverting until fixed.

This reverts commit 9c78ee0bf4.
This commit is contained in:
Tom Hacohen 2015-08-26 10:32:32 +01:00
parent 9c78ee0bf4
commit 37abea3831
3 changed files with 5 additions and 32 deletions

View File

@ -917,13 +917,13 @@ _eo_add_internal_start(const char *file, int line, const Eo_Class *klass_id, Eo
eo_do(eo_id, eo_parent_set(parent_id)); eo_do(eo_id, eo_parent_set(parent_id));
/* If there's a parent. Ref. Eo_add should return an object with either a /* If there's a parent. Unref. Eo_add should return an object with either a
* parent ref, or with the lack of, just a ref. */ * parent ref, or with the lack of, just a ref. */
{ {
Eo *parent_tmp; Eo *parent_tmp;
if (ref && eo_do_ret(eo_id, parent_tmp, eo_parent_get())) if (!ref && eo_do_ret(eo_id, parent_tmp, eo_parent_get()))
{ {
_eo_ref(obj); _eo_unref(obj);
} }
} }

View File

@ -124,13 +124,8 @@ _eo_base_parent_set(Eo *obj, Eo_Base_Data *pd, Eo *parent_id)
ERR("CONTACT DEVS!!! SHOULD NEVER HAPPEN!!! Old parent %p for object %p is not a valid Eo object.", ERR("CONTACT DEVS!!! SHOULD NEVER HAPPEN!!! Old parent %p for object %p is not a valid Eo object.",
pd->parent, obj); pd->parent, obj);
} }
/* Only unref if we don't have a new parent instead. */
if (!parent_id)
{
eo_unref(obj); eo_unref(obj);
} }
}
/* Set new parent */ /* Set new parent */
if (parent_id) if (parent_id)
@ -143,6 +138,7 @@ _eo_base_parent_set(Eo *obj, Eo_Base_Data *pd, Eo *parent_id)
pd->parent = parent_id; pd->parent = parent_id;
parent_pd->children = eina_list_append(parent_pd->children, obj); parent_pd->children = eina_list_append(parent_pd->children, obj);
pd->parent_list = eina_list_last(parent_pd->children); pd->parent_list = eina_list_last(parent_pd->children);
eo_ref(obj);
} }
else else
{ {

View File

@ -464,29 +464,6 @@ START_TEST(eo_refs)
ck_assert_int_eq(eo_ref_get(obj2), 1); ck_assert_int_eq(eo_ref_get(obj2), 1);
ck_assert_int_eq(eo_ref_get(obj3), 2); ck_assert_int_eq(eo_ref_get(obj3), 2);
/* Setting and removing parents. */
obj = eo_add(SIMPLE_CLASS, NULL);
obj2 = eo_ref(eo_add(SIMPLE_CLASS, obj));
obj3 = eo_ref(eo_add(SIMPLE_CLASS, NULL));
eo_do(obj2, eo_parent_set(obj3));
eo_do(obj3, eo_parent_set(obj));
ck_assert_int_eq(eo_ref_get(obj2), 2);
ck_assert_int_eq(eo_ref_get(obj3), 2);
eo_do(obj2, eo_parent_set(NULL));
eo_do(obj3, eo_parent_set(NULL));
ck_assert_int_eq(eo_ref_get(obj2), 1);
ck_assert_int_eq(eo_ref_get(obj3), 1);
eo_do(obj2, eo_parent_set(obj));
eo_do(obj3, eo_parent_set(obj));
ck_assert_int_eq(eo_ref_get(obj2), 1);
ck_assert_int_eq(eo_ref_get(obj3), 1);
eo_del(obj);
eo_del(obj2);
eo_del(obj3);
/* Just check it doesn't seg atm. */ /* Just check it doesn't seg atm. */
obj = eo_add(SIMPLE_CLASS, NULL); obj = eo_add(SIMPLE_CLASS, NULL);