path: root/src/lib/eo/eo_base_class.c (unfollow)
AgeCommit message (Collapse)Author
2019-01-02eo: enable priority with event forwarder.Cedric BAIL
Note: Their isn't any ability to do something like a static array of events at the moment. It might lead to large memory being used when it wouldn't be necessary. If that was the case, we could fix it, but it would require a lot of dynamic hash operation I think. Reviewed-by: Marcel Hollerbach <> Differential Revision:
2019-01-02eo: correctly allow for triggering the same event while the previous one was ↵Cedric BAIL
cancelled. If you are to trigger an event and just cancelled the one being processed, it would just not propagate any event while it should. The code looks like more like it was forgotten line or something. Reviewed-by: Marcel Hollerbach <> Differential Revision:
2018-12-07eo: make efl_future_then have a data pointer in addition of the object pointer.Cedric BAIL
Summary: In the case when you have multiple future in flight related to one object, you couldn't use the previous version of efl_future_then. Now all function calls take a void* pointer that allow multiple future to have their private data request data accessible in all the callback. This should not break released API as Eo.h is not released yet and so was efl_future_Eina_FutureXXX_then. Depends on D7332 Reviewers: felipealmeida, segfaultxavi, vitor.sousa, SanghyeonLee, bu5hm4n Reviewed By: segfaultxavi Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T7472 Differential Revision:
2018-09-21eo: Add null checkJunsuChoi
Summary: This commit add null check on _efl_object_invalidate In EO_OBJ_POINTER, if obj_id is null, obj can also be null. Test Plan: N/A Reviewers: cedric, zmike Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2018-08-20efl_object: add call for getting invalidatingMarcel Hollerbach
Summary: there is now invalidated & invalidating. invalidated returns true when all children are invalidated, and the object is / was requested to be invalidated. invalidating return true when the object is called to be invalidated but not all children are invalidated yet. However, the object is garanteed to be invalidated in near future. Reviewers: zmike Reviewed By: zmike Subscribers: cedric Tags: #efl, #do_not_merge Differential Revision:
2018-07-05eo/base_class: explicitly refuse to set an object as its own parentMike Blumenkrantz
somehow this has been possible until now. no. @fix Differential Revision:
2018-06-25eo: remove some erroneous mutex unlocks during base class parent_set errorsMike Blumenkrantz
recent changes added unlocks for these mutexes in some other places, so only do the unlocks where necessary fix T7020
2018-06-25eo: remove some erroneous mutex unlocks during base class parent_set errorsMike Blumenkrantz
recent changes added unlocks for these mutexes in some other places, so only do the unlocks where necessary fix T7020 Depends on D6356 Differential Revision:
2018-06-05eo: make noref also a special countMarcel Hollerbach
Summary: this brings down the first frame time from 2.0 sec. to something at 0.7 sec. ref T6983 Reviewers: zmike Reviewed By: zmike Subscribers: YOhoho, cedric, #committers, zmike Tags: #efl Maniphest Tasks: T6983 Differential Revision:
2018-05-28eo: do not return efl_invalidated true when its not trueMarcel Hollerbach
Summary: the object is invalidated AFTER the parent is lost, (thats what the doc says). Returning invalidated as true when the parent is still present is thus not correctly. Depends on D6222 Reviewers: cedric, zmike, JackDanielZ Subscribers: cedric, #committers, zmike Tags: #efl Differential Revision: Reviewed-by: Cedric BAIL <>
2018-05-24eo: an object is invalidated if it is invalidated or if any parent is ↵Cedric BAIL
2018-05-24eo: move wref set to NULL to append after last event.Cedric BAIL
Making wref disapear before the last event require additional work to use them during the FREE event. As I think we should introduce a wref that disapear after the invalidate state, it makes sense to move that to a later stage. Especially because their is no specific event related to them being set to NULL.
2018-05-24eo: allow efl_part during object invalidate.Cedric Bail
2018-05-24eo: remove parent_sink as this hack should not be necessary anymore.Cedric BAIL
2018-05-24eo: try to make efl_add and efl_add_ref refcounting sane in all case.Cedric BAIL
2018-05-24eo: actually enforcing the efl_parent_set code path is necessary to enforce ↵Cedric Bail
the predictability of the code path.
2018-05-24eo: as efl_del is not an Eo API call anymore, manually protect call with ↵Cedric Bail
2018-05-24eo: move destruction of the link with children to be always after invalidate.Cedric Bail
2018-05-24eo: propagate invalidate before destroying the link to the parent.Cedric Bail
2018-05-24eo: improve message for debugging life cycle issues.Cedric Bail
2018-05-24eo: efl_del should not be something anyone can override this can break so ↵Cedric BAIL
many things. Allowing override of efl_del allow for messing with object life cycle which can create problem for binding where an object was expected to be invalidated, but isn't really.
2018-05-24eo: actually during invalidating we already have an invalidated object.Cedric BAIL
Differential Revision:
2018-05-24eo: check for allow_parent_unref during efl_unref and silence warning.Cedric BAIL
Differential Revision:
2018-05-24eo: add an automatic fallback at the moment when efl_unref instead of ↵Cedric BAIL
efl_del is called. Differential Revision:
2018-05-24eo: optimize efl object reuse by limiting the amount of call to pointer ↵Cedric BAIL
translation. Differential Revision:
2018-05-24eo: prevent parenting to an already invalidated parent.Cedric BAIL
Differential Revision:
2018-05-24eo: only call efl_parent_set(NULL) at the end of invalidate if the object is ↵Cedric BAIL
not invalidating. Add also a comment to justify why we do force parent to NULL during invalidate. Differential Revision:
2018-05-24eo: improve error message by pointing to the class that is creating trouble.Cedric BAIL
Differential Revision:
2018-05-24eo: preventing infinite loop by safely iterating over children during ↵Cedric BAIL
destructor. Differential Revision:
2018-05-24eo: invalidate at the end of efl_invalidate only and prevent infinite ↵Cedric BAIL
recursion with an invalidating phase. Differential Revision:
2018-05-24eo: to avoid mistake in timing, efl_invalidate should always be triggered ↵Cedric Bail
before any destructor code. Differential Revision:
2018-05-18eo: do not expose callback,add and del events in bindingsXavi Artigas
These events have been removed from efl_object.eo. Bindings can still use the EFL_EVENT_CALLBACK_ADD and EFL_EVENT_CALLBACK_DEL events from C, but they won't be available to the bound language. The rationale is that bound languages probably will have their own way to handle callbacks and C function pointers will mean very little to them. For example, the binding code could route the native callback through a dispatcher so the received function ptr would always be that of the dispatcher method. Closes D6179.
2018-05-01efl: remove old Efl_Future, Efl_Promise.Cedric BAIL
2018-05-01eo: invalidate before setting the parent to NULL.Cedric Bail
2018-05-01eo: linking a future lifecycle with an object lifecycle doesn't change the ↵Cedric BAIL
2018-05-01eo: if the pointer is incorrect, goto to the error handler.Cedric BAIL
2018-04-17eolian gen: enable constness generation on property getter implsDaniel Kolesa
This changes a lot of things all across the EFL. Previously, methods tagged @const had both their external prototype and internal impl generated with const on object, while property getters only had const on the external API. This is now changed and it all has const everywhere. Ref T6859.
2018-04-16eo : Add null checkJunsuChoi
Summary: This commit add null check on __efl_auto_unref_set. In EO_OBJ_POINTER, if obj_id is null, obj can also be null. Test Plan: N/A Reviewers: woohyun, kimcinoo, cedric Subscribers: cedric Differential Revision: Reviewed-by: Cedric BAIL <>
2018-04-02eo: trigger invalidate and noref event before any modification is commited ↵Cedric Bail
on the object tree.
2018-03-30eo: add events when object get invalidated and loose all its reference ↵Cedric BAIL
matching other lifecycle events.
2018-03-29eo: use EINA_SAFETY_ON_TRUE_GOTO to error message out in case of mistake.Cedric BAIL
2018-03-20eo: start reporting abuse of efl_delCedric Bail
2018-03-19eo: slight improvement of invalidate code as parent_set(NULL) will be valid ↵Cedric Bail
on an invalidated object.
2018-03-19eo: automatically cancel a future that is attached to an invalidated object.Cedric Bail
2018-03-15eo: Orphan an object that is being invalidated.Lauro Moura
Summary: This will avoid infinite loops and errors when the parent tries to orphan an invalidated child. Fixes T6780 Test Plan: Run `make check` Reviewers: cedric Maniphest Tasks: T6780 Differential Revision: Reviewed-by: Cedric BAIL <>
2018-03-13eo: fix invalidate to always happen.Cedric BAIL
2018-03-12eo: cleanup future on invalidate.Cedric BAIL
2018-03-08eo: ERR some warning when illegally using invalidated object.Cedric BAIL
2018-03-08eo: when an object is reused, reset the invalidate flag.Cedric BAIL
2018-03-07eo: introduce invalidate and noref state.Cedric Bail
This is just a first step. All user of destructor should be updated to move the code that rely on their efl_parent and on efl_provider_find to invalidate. Then we will be able to change the way efl_add and efl_del work to properly refcount things. efl_noref won't be triggered at the moment until both efl_parent_set(obj, NULL) and the last user ref are set to NULL. This is not what we want, but due to how user refcount is accounting parent at the moment, until all the code is move to rely on invalidate we can not fix this.