Skip to content

Don't pass default GLib marshallers for signals

By passing NULL to g_signal_new instead of a marshaller, GLib will actually internally optimize the signal (if the marshaller is available in GLib itself) by also setting the valist marshaller. This makes the signal emission a bit more performant than the regular marshalling, which still needs to box into GValue and call libffi in case of a generic marshaller.

Note that for custom marshallers, one would use g_signal_set_va_marshaller() with the valist marshaller instead.

Merge request reports