Signal emission changes



I just landed a bunch of signal emission optimizations in gobject. It
should be transparent to everyone, although it you're using an
non-standard signal marshaller for a heavily used signal you might want
to look at setting a custom va_marshaller.

The basic idea is that for a the (common) case of a single signal
handler when various complex signal emission features are not in use we
can avoid collecting the va_list from g_signal_emit_valist() into
GValues and demarshall the va_list immediately into the callback
arguments.

This gives performance increases in the range 10-20 fps in the clutter
performance checks, and could also help in e.g. the gtk+ size allocation
machinery.

I've added some new signal tests, and I'm running my entire session with
this without any problems. However, its possible that there is some edge
case that broke, so if you see weird behaviour wrt signal emissions try
a glib without this change and report any problems to me.




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