server: add wl_global_remove

This commit adds a new wl_global_remove function that just sends a global
remove event without destroying it. See [1] for details.

Removing a global is racy, because clients have no way to acknowledge they
received the removal event.

It's possible to mitigate the issue by sending the removal event, waiting a
little and then destructing the global for real. The "wait a little" part is
compositor policy.

[1]: https://gitlab.freedesktop.org/wayland/wayland/issues/10

Signed-off-by: Simon Ser <contact@emersion.fr>
This commit is contained in:
Simon Ser 2019-07-20 23:36:29 +03:00
parent 11623e8fdd
commit 39852f1146
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
2 changed files with 43 additions and 2 deletions

View file

@ -246,6 +246,9 @@ wl_global_create(struct wl_display *display,
int version,
void *data, wl_global_bind_func_t bind);
void
wl_global_remove(struct wl_global *global);
void
wl_global_destroy(struct wl_global *global);