util/signal: Introduce wlr_signal_emit_final

wlr_signal_emit_final is conceptually similar to wl_signal_emit_mutable
(i.e., our old wlr_signal_emit_safe), but instead of running all
listeners that were added at the time the signal emit started, we run
until the list is empty, removing entries as we go along.

This ensures that newly added signals are run all the same.
This commit is contained in:
Kenny Levinsen 2025-05-06 00:30:24 +02:00
parent 156d47c866
commit b222fe2a4a
4 changed files with 29 additions and 1 deletions

8
include/util/signal.h Normal file
View file

@ -0,0 +1,8 @@
#ifndef UTIL_SIGNAL_H
#define UTIL_SIGNAL_H
#include <wayland-server-core.h>
void wlr_signal_emit_final(struct wl_signal *signal, void *data);
#endif