diff options
| author | Sebastian Wick <sebastian@sebastianwick.net> | 2021-10-25 04:34:49 +0200 |
|---|---|---|
| committer | Daniel Stone <daniels@collabora.com> | 2024-02-15 10:53:21 +0000 |
| commit | 9c4213ed3eb3942766712df936775d827b846d0b (patch) | |
| tree | 8e78708e916547e5dbaa247386e6d0b7f959ad5c /src/wayland-server-core.h | |
| parent | event-loop: use wl_priv_signal for the destroy signal (diff) | |
| download | wayland-9c4213ed3eb3942766712df936775d827b846d0b.tar wayland-9c4213ed3eb3942766712df936775d827b846d0b.tar.gz wayland-9c4213ed3eb3942766712df936775d827b846d0b.tar.bz2 wayland-9c4213ed3eb3942766712df936775d827b846d0b.tar.lz wayland-9c4213ed3eb3942766712df936775d827b846d0b.tar.xz wayland-9c4213ed3eb3942766712df936775d827b846d0b.tar.zst wayland-9c4213ed3eb3942766712df936775d827b846d0b.zip | |
server: add wl_client_get_user_data/wl_client_set_user_data
The only way to attach some data to a wl_client seems to be setting up a
destroy listener and use wl_container_of. Let's make it straight forward
to attach some data.
Having an explicit destroy callback for the user data makes managing the
user data lifetime much more convenient. All other callbacks, be they
wl_resource request listeners, destroy listeners or destructors, or
wl_client destroy listeners, can assume that the wl_client user data
still exists if it was set. Otherwise making that guarantee would be
complicated.
Co-authored-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Signed-off-by: Sebastian Wick <sebastian@sebastianwick.net>
Diffstat (limited to 'src/wayland-server-core.h')
| -rw-r--r-- | src/wayland-server-core.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/wayland-server-core.h b/src/wayland-server-core.h index df95821..00a5443 100644 --- a/src/wayland-server-core.h +++ b/src/wayland-server-core.h @@ -365,6 +365,16 @@ wl_client_for_each_resource(struct wl_client *client, wl_client_for_each_resource_iterator_func_t iterator, void *user_data); +typedef void (*wl_user_data_destroy_func_t)(void *data); + +void +wl_client_set_user_data(struct wl_client *client, + void *data, + wl_user_data_destroy_func_t dtor); + +void * +wl_client_get_user_data(struct wl_client *client); + /** \class wl_listener * * \brief A single listener for Wayland signals |
