/**
* @}
*/
+
+
+ /* Private for EFL internal use only. Do not use these! */
+EAPI int ___eo_ref2_get(const Eo *obj_id);
+EAPI void ___eo_ref2_reset(const Eo *obj_id);
+
#ifdef __cplusplus
}
#endif
return obj->user_refcount;
}
+EAPI int
+___eo_ref2_get(const Eo *obj_id)
+{
+ EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, 0);
+
+ return obj->refcount;
+}
+
+EAPI void
+___eo_ref2_reset(const Eo *obj_id)
+{
+ EO_OBJ_POINTER_RETURN(obj_id, obj);
+ obj->refcount = 0;
+}
+
+
EAPI void
eo_del_intercept_set(Eo *obj_id, Eo_Del_Intercept del_intercept_func)
{
del = EINA_FALSE;
EINA_INLIST_FOREACH(e->layers, lay)
{
+ Eo *eo_obj;
Evas_Object_Protected_Data *o;
+ Eina_List *unrefs = NULL;
evas_layer_pre_free(lay);
ERR("obj(%p, %s) ref count(%d) is bigger than 0. This object couldn't be deleted", o, o->type, eo_ref_get(o->object));
continue;
}
+ else
+ {
+ unrefs = eina_list_append(unrefs, o->object);
+ }
del = EINA_TRUE;
}
}
+ EINA_LIST_FREE(unrefs, eo_obj)
+ {
+ ERR("Killing Zombie Object [%p] ref=%i:%i\n", eo_obj, eo_ref_get(eo_obj), ___eo_ref2_get(eo_obj));
+ ___eo_ref2_reset(eo_obj);
+ while (eo_ref_get(eo_obj) > 1) eo_unref(eo_obj);
+ while (eo_ref_get(eo_obj) < 1) eo_ref(eo_obj);
+ eo_del(eo_obj);
+ }
}
}
EINA_INLIST_FOREACH(e->layers, lay)