If possible, GLib will try to use the va_marshaller to pass the signal arguments, rather than unboxing into and out of a GValue . This is much more performant and especially good for often-thrown signals.

The original bug that adds g_signal_set_va_marshaller() even mentions Clutter performance issues as a drive to implement the va_marshaller in GLib (see https://bugzilla.gnome.org/show_bug.cgi?id=661140).

!700 (merged)