aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2017-09-28 15:43:28 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-09-28 16:10:53 +0900
commit008ec97d84aed9adca4991be4ed358a217128708 (patch)
tree85a619bb05b8bb23be4346350735da810bd93416
parentecore wl2 - fix null checing of drag offer - coverity (diff)
downloadefl-008ec97d84aed9adca4991be4ed358a217128708.tar.gz
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
-rw-r--r--src/lib/eo/eo.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 49dc221aee..9a65b20985 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -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