[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gtk-devel
Subject:    Re: Sinkability considered harmful
From:       Tim Janik <timj () imendio ! com>
Date:       2006-01-04 14:33:54
Message-ID: Pine.LNX.4.61.0601041531040.1046 () localhost ! localdomain
[Download RAW message or body]

On Wed, 4 Jan 2006, muppet wrote:

> On Jan 4, 2006, at 6:33 AM, Tim Janik wrote:
>
>> On Tue, 3 Jan 2006, Federico Mena Quintero wrote:
>> 
>>> The "floating" flag was introduced in GtkObject to:
> ...
>>> 	2. make things easier for language bindings.
>> 
>> this is not quite right. the floating flag is of no use to langauge 
>> bindings,
>> if it affects them, it makes things harder for LBs.
>
> Actually (to throw a wrench in things), the floating flag *does* make 
> language bindings easier.  The GtkObject wrapper can *always* do an 
> unconditional ref and sink; if it was floating, e.g., returned from a 
> constructor, the object is now owned by the wrapper, and if not, the wrapper 
> is just another owner.  For non-floating objects, the binding author must now 
> distinguish constructors from other functions in order to avoid leaking 
> objects.  Gtk2-Perl has seen a lot of reference-count leaks related to 
> GObject-returning functions that we marked incorrectly (human error), but 
> none related to GtkObject-returning functions.
>
> That said, the main impetus for the human error involved in marking API 
> functions has been the inconsistency of ownership for returned objects, that 
> is, violation of the Principle of Least Surprise.  It's not cool to have to 
> look at the reference docs for every single function to verify whether you 
> need to unref the return value.

ok, thanks for the insight. sounds like LBs will also benefit from sinkable
GObjects in the long run then.

---
ciaoTJ
_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic