EAPI void _eo_call_end(Eo_Op_Call_Data *call);
// end of the eo_add. Calls finalize among others
-EAPI Eo * _eo_add_end(Eo *obj, Eina_Bool is_fallback);
+EAPI Eo * _eo_add_end(Eo *obj, Eina_Bool is_ref, Eina_Bool is_fallback);
EAPI Eo *eo_super(const Eo *obj, const Eo_Class *cur_klass);
({ \
Eo * const __eo_self = _eo_add_internal_start(__FILE__, __LINE__, klass, parent, is_ref, EINA_FALSE); \
(void) ((void)0, ##__VA_ARGS__); \
- (Eo *) _eo_add_end(eo_self, EINA_FALSE); \
+ (Eo *) _eo_add_end(eo_self, is_ref, EINA_FALSE); \
})
#else
( \
_eo_add_internal_start(__FILE__, __LINE__, klass, parent, is_ref, EINA_TRUE), \
##__VA_ARGS__, \
- (Eo *) _eo_add_end(eo_self, EINA_TRUE) \
+ (Eo *) _eo_add_end(eo_self, is_ref, EINA_TRUE) \
)
#endif
}
EAPI Eo *
-_eo_add_internal_start(const char *file, int line, const Eo_Class *klass_id, Eo *parent_id, Eina_Bool ref, Eina_Bool is_fallback)
+_eo_add_internal_start(const char *file, int line, const Eo_Class *klass_id, Eo *parent_id, Eina_Bool ref EINA_UNUSED, Eina_Bool is_fallback)
{
_Eo_Object *obj;
Eo_Stack_Frame *fptr = NULL;
_eo_ref(new_obj);
}
- if (ref && eo_parent_get(eo_id))
- {
- eo_ref(eo_id);
- }
-
if (is_fallback)
{
fptr->obj = eo_id;
}
EAPI Eo *
-_eo_add_end(Eo *eo_id, Eina_Bool is_fallback)
+_eo_add_end(Eo *eo_id, Eina_Bool is_ref, Eina_Bool is_fallback)
{
Eo *ret = eo_finalize(eo_id);
ret = _eo_add_internal_end(eo_id, ret);
+ if (is_ref && eo_parent_get(eo_id))
+ {
+ eo_ref(eo_id);
+ }
+
if (is_fallback)
{
_eo_add_fallback_stack_pop();