eo2: use internal unref, break if eo2_start returns NULL

This commit is contained in:
Jérémy Zurcher 2013-07-11 14:15:39 +02:00 committed by Tom Hacohen
parent 473609e1d3
commit 23ae1fc453
2 changed files with 16 additions and 7 deletions

View File

@ -653,18 +653,21 @@ eo2_class_funcs_set(Eo_Class *klass_id, Eo2_Op_Description *op_descs, int n);
/* FIXME: Don't use this unref, use an internal one. Reduce id resolution. */
#define eo2_do_end(obj) eo_unref(obj)
EAPI void eo2_unref_internal(_Eo *obj);
#define eo2_do_end(obj) eo2_unref_internal(obj)
#define eo2_o _obj_, _objid_
#define eo2_a _Eo *obj, Eo *objid
#define eo2_do(objid, ...) \
do \
{ \
Eo *_objid_ = objid; \
#define eo2_do(objid, ...) \
do \
{ \
Eo *_objid_ = objid; \
_Eo *_obj_ = eo2_do_start(_objid_); \
do { __VA_ARGS__ ; } while (0); \
eo2_do_end(_objid_); \
if (!_obj_) break; \
do { __VA_ARGS__ ; } while (0); \
eo2_do_end(_obj_); \
} while (0)
#define eo2_class_do(clsid, ...) \

View File

@ -263,6 +263,12 @@ eo2_do_start(Eo *obj_id)
return obj;
}
EAPI void
eo2_unref_internal(_Eo *obj)
{
_eo_unref(obj);
}
EAPI Eina_Bool
eo2_call_resolve_internal(_Eo *obj, const Eo_Class *klass_id, Eo_Op op, Eo2_Op_Call_Data *call)
{