forked from enlightenment/efl
eo: check for allow_parent_unref during efl_unref and silence warning.
Differential Revision: https://phab.enlightenment.org/D6097
This commit is contained in:
parent
dcfddcd283
commit
c28eb28728
|
@ -1885,7 +1885,8 @@ efl_unref(const Eo *obj_id)
|
|||
if (EINA_UNLIKELY(obj->user_refcount == 1 &&
|
||||
obj->parent))
|
||||
{
|
||||
CRI("Calling efl_unref instead of efl_del or efl_parent_set(NULL). Temporary fallback in place triggered.");
|
||||
if (!obj->allow_parent_unref)
|
||||
CRI("Calling efl_unref instead of efl_del or efl_parent_set(NULL). Temporary fallback in place triggered.");
|
||||
EO_OBJ_DONE(obj_id);
|
||||
efl_del(obj_id);
|
||||
return ;
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
#include <Eina.h>
|
||||
#include <fnmatch.h>
|
||||
|
||||
#include "Eo.h"
|
||||
#include <Eo.h>
|
||||
|
||||
#include "eo_internal.h"
|
||||
|
||||
#include "eo_ptr_indirection.h"
|
||||
#include "eo_private.h"
|
||||
#include "eina_promise_private.h"
|
||||
|
@ -2212,9 +2215,12 @@ err_parent:
|
|||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_object_allow_parent_unref_set(Eo *obj_id EINA_UNUSED, Efl_Object_Data *pd, Eina_Bool allow)
|
||||
_efl_object_allow_parent_unref_set(Eo *obj_id, Efl_Object_Data *pd, Eina_Bool allow)
|
||||
{
|
||||
EO_OBJ_POINTER_RETURN(obj_id, obj);
|
||||
obj->allow_parent_unref = !!allow;
|
||||
pd->allow_parent_unref = !!allow;
|
||||
EO_OBJ_DONE(obj_id);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
|
|
|
@ -118,6 +118,7 @@ struct _Eo_Object
|
|||
Eina_Bool invalidate:1;
|
||||
Eina_Bool is_invalidating:1;
|
||||
Eina_Bool parent : 1;
|
||||
Eina_Bool allow_parent_unref : 1;
|
||||
|
||||
Eina_Bool del_triggered:1;
|
||||
Eina_Bool destructed:1;
|
||||
|
|
Loading…
Reference in New Issue