Skip to content

gio: specify proper c_marshaller and va_marshallers

Christian Hergert requested to merge wip/chergert/marshall-matters into master

This is related to #1532 (closed)

If a c_marshaller is specified to g_signal_new(), no va_marshaller will be automatically applied, even if we have an internal marshaller which could be used for the closure. However, if c_marshaller is set to NULL for the simple cases, a va_marshaller will be automatically applied.

Further more, by ensuring we have proper marshallers for all objects within Gio, we allow application developers to get proper stack traces from profiler tooling such as Linux's perf (which does stack unwinding from kernel-space). Going through the ffi_call_unix64 frame on x86_64 causes stack traces to be cut short.

There might be a small performance improvement as well, but it's likely negligible at best.

Merge request reports