Re: gperl_callback_invoke userdata copy



Kevin Ryde wrote:
Maybe something like this to describe the userdata scalar.
Though I guess it belongs somewhere in Glib rather than Gtk.

I think it's fine to have it in Gtk2.  A few comments:

 on a possibly localized error message; you can match errors by explicit and
 predictable conditions.  See L<Glib::Error> for more information.
 
+=head2 Callbacks
+
 Use normal perl callback/closure tricks with callbacks.  The most common use
 you'll have for callbacks is with the Glib signal_connect method:

This makes "Callbacks" come after "Miscellaneous".  I think it would be better
to move the callback stuff above "Miscellaneous".

+The userdata is copied from the value you supply in signal_connect, so
+it's a separate scalar and modifying it doesn't modify a variable etc
+you might have passed to signal_connect.  The copy is "shallow", the
+same as a plain assignment like
+
+    my $stored_user_data = $initial_user_data;
+    ...
+    &$callback (..., $stored_user_data);
+    # ... $_[-1] alters $stored_user_data, not $initial_user_data

This confuses me.  The paragraph above the code seems to say that altering
$_[-1] does *not* modify the variable passed to signal_connect() -- but the
point of this thread has been to guarantee that it does, right?

-Torsten



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]