server: introduce wl_signal_emit_mutable
wl_signal_emit doesn't handle well situations where a listener removes another listener. This can happen in practice: wlroots and Weston 1 both have private helpers to workaround this defect.
wl_signal_emit can't be fixed without breaking the API. Instead, introduce a new function. Callers need to make sure to always remove listeners when they are free'd.
Signed-off-by: Simon Ser contact@emersion.fr Signed-off-by: Alexandros Frantzis alexandros.frantzis@collabora.com