Hi, Reading the page it seems incorrect regarding some points:
1. This method is similar to what we have now in legacy, pre-Eo, EFL. We create an object and once we "content_set" it, that is, put it inside another object, we lose the reference we have. We don't need to unref it, as that implies an unref. The downside is, that it's implicit, and might confuse people and make them use a ptr after they no longer hold the ref. No, we don't loose the reference. Actually in this Evas there were no references at all (just recently _ref/unref were added). What you do have is one object explicitly calling delete on the other with content_set(), pack and similar. This was done because in widget trees you often want to delete the whole tree and not the parent and leave the logical children dangling. Some toolkits differentiate these stuff with explicit "del" and "deltree", but we don't as we have the most common. GObject uses the concept of floating references, which is exactly to address this case. I recommend people read it before voting and that we introduce such concept as well: https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html Basically it says: GInitiallyUnowned is derived from GObject. The only difference between the two is that the initial reference of a GInitiallyUnowned is flagged as a "floating" reference. This means that it is not specifically claimed to be "owned" by any code portion. The main motivation for providing floating references is C convenience. In particular, it allows code to be written as: container = create_container (); container_add_child (container, create_child()); If container_add_child() calls g_object_ref_sink() on the passed-in child, no reference of the newly created child is leaked. Without floating references, container_add_child() can only g_object_ref() the new child, so to implement this code without reference leaks, it would have to be written as: Child *child; container = create_container (); child = create_child (); container_add_child (container, child); g_object_unref (child); The floating reference can be converted into an ordinary reference by calling g_object_ref_sink(). For already sunken objects (objects that don't have a floating reference anymore), g_object_ref_sink() is equivalent to g_object_ref() and returns a new reference. Since floating references are useful almost exclusively for C convenience, language bindings that provide automated reference and memory ownership maintenance (such as smart pointers or garbage collection) should not expose floating references in their API. That said, this usage of floating shouldn't be a policy for whole EO, rather chosen for each usage pattern. On Wed, Apr 9, 2014 at 6:35 AM, Tom Hacohen <tom.haco...@samsung.com> wrote: > Hey guys, > > I've started a poll regarding the behaviour of Eo and refcounts. We > would like to hear everyone out. This is not a super low level Eo issue, > but actually an API issue that will affect app developers as well. > > Everyone on this list is welcomed and encouraged to reply to the poll. > > https://phab.enlightenment.org/V7 > > Thanks, > Tom. > > ------------------------------------------------------------------------------ > Put Bad Developers to Shame > Dominate Development with Jenkins Continuous Integration > Continuously Automate Build, Test & Deployment > Start a new project now. Try Jenkins in the cloud. > http://p.sf.net/sfu/13600_Cloudbees > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel -- Gustavo Sverzut Barbieri -------------------------------------- Mobile: +55 (19) 99225-2202 Contact: http://www.gustavobarbieri.com.br/contact ------------------------------------------------------------------------------ Put Bad Developers to Shame Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud. http://p.sf.net/sfu/13600_Cloudbees _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel