eo: Allow efl_reuse to be called with a parent

If an object still has a parent inside the del intercept, we shouldn't
reset the "parent_sunk" flag. This would indeed break logic as
parent_sunk == false implies that a parent was never set, which means
the parent must be null. Right now this case isn't used but it can be
imagined with caches of evas objects (they should remain parented to
their evas).

@fix
This commit is contained in:
Jean-Philippe Andre 2017-09-28 15:43:28 +09:00
parent 9ee741cf7f
commit 008ec97d84
1 changed files with 7 additions and 3 deletions

View File

@ -1028,13 +1028,17 @@ EAPI void
efl_reuse(const Eo *eo_id)
{
Eo *obj = (Eo *) eo_id;
EO_OBJ_POINTER_RETURN(obj, _obj);
efl_object_override(obj, NULL);
_efl_object_parent_sink_set(obj, EINA_FALSE);
if (!efl_parent_get(obj))
_efl_object_parent_sink_set(obj, EINA_FALSE);
#ifdef EO_DEBUG
EO_OBJ_POINTER_RETURN(eo_id, _obj);
_eo_log_obj_ref_op(_obj, EO_REF_OP_REUSE);
EO_OBJ_DONE(eo_id);
#endif
EO_OBJ_DONE(eo_id);
}
void