Re: boxed types and copies
- From: Owen Taylor <otaylor redhat com>
- To: gtk-devel-list gnome org
- Subject: Re: boxed types and copies
- Date: 13 Dec 2000 17:34:12 -0500
James Henstridge <james daa com au> writes:
> On 12 Dec 2000, Havoc Pennington wrote:
> > Hi,
> > The recent gtk_signal_emit() change broke the text widget - I'm using
> > GTK_TYPE_TEXT_ITER, GTK_TYPE_STRING, etc. for the signal signature,
> > at James' request, so Python can emit these signals.
> > However these signal args MUST be passed by reference, it is far too
> > slow to copy the inserted string, and the iterator is supposed to be
> > modified by the signal handlers.
> > Moving gtk_signal_emit() to the GValue collector causes it to
> > copy-by-value every boxed argument. So I either have to move back to
> > GTK_TYPE_POINTER and break language bindings, or leave GtkTextBuffer
> > broken.
> Moving back to simply using G_TYPE_POINTER would be very bad for
> language bindings (and the change for the GtkCTreeNode signal arguments to
> G_TYPE_POINTER has made the ctree almost unusable to language bindings).
> One possible solution is to allow `derived' G_TYPE_POINTER values. By
> this, I mean they would have the same semantics as G_TYPE_POINTER, but
> have a different type code, so that language bindings could have a
> chance of handling them correctly.
While this would work, I believe this is completely wrong for something
like GtkRequisition or GtkTextIter - these are things that _can_ be
meaningfully copied by value.
Its just that doing so while emitting signals is:
b) Wrong when parameter is an out or in-out parameter.
] [Thread Prev