GSignal emission is synchronous, i.e. all the connected callbacks to a signal are run sequentially by g_signal_emit()
, which will return control to you once all callbacks return. thus, it is safe to emit a signal and free the arguments of the signal after g_signal_emit()
returns.
if you're using DBus then it's still safe: the data will be copied over to the receiving process(es), as it would be impossible to share it across process boundaries.