GBinding: g_object_bind_property_with_closures is not introspection friendly
Submitted by Simon Feltman
Link to original bug (#690394)
Description
I am trying to replace the static exposure of GObject.Object.bind_property/_full in pygobject with introspection based bindings that will also allow transform closures. g_object_bind_property_with_closure is being exposed as "bind_property_full" by using the "Rename to" annotation. This is callable from python introspection, but the gbinding transform closure marshalling expects the transform result to be set as the third value of the closure params list. The closure return value is then used as a boolean return code, see: gobject/gbinding.c:bind_with_closures_transform_to
Due to this, there does not seem to be a way to successfully use bind_property_full from introspection based bindings. There is no generic way to know that the third param is intended as an "out" param from what I can tell. Furthermore, the closures params list is also generally marked as const.
I think we can remove the "Rename to" annotation on g_object_bind_property_with_closure and use g_object_bind_property_full directly through introspection with some annotation updates.
Patch with proposed annotation fixes to follow shortly.