Add missing destroy events on automatically destroyed objects

This commit is contained in:
Kirill Primak 2024-11-22 20:37:39 +03:00 committed by Simon Ser
parent 3e651b4642
commit c0d4d7217b
10 changed files with 21 additions and 1 deletions

View file

@ -682,6 +682,8 @@ static void handle_display_destroy(struct wl_listener *listener, void *data) {
display_destroy);
wlr_log(WLR_DEBUG, "Destroying wlr_drm_lease_v1_manager");
wl_signal_emit_mutable(&manager->events.destroy, NULL);
struct wlr_drm_lease_device_v1 *device, *tmp;
wl_list_for_each_safe(device, tmp, &manager->devices, link) {
drm_lease_device_v1_destroy(device);
@ -718,6 +720,7 @@ struct wlr_drm_lease_v1_manager *wlr_drm_lease_v1_manager_create(
manager->display_destroy.notify = handle_display_destroy;
wl_display_add_destroy_listener(display, &manager->display_destroy);
wl_signal_init(&manager->events.destroy);
wl_signal_init(&manager->events.request);
return manager;

View file

@ -322,6 +322,7 @@ static void pointer_constraints_bind(struct wl_client *client, void *data,
static void handle_display_destroy(struct wl_listener *listener, void *data) {
struct wlr_pointer_constraints_v1 *pointer_constraints =
wl_container_of(listener, pointer_constraints, display_destroy);
wl_signal_emit_mutable(&pointer_constraints->events.destroy, NULL);
wl_list_remove(&pointer_constraints->display_destroy.link);
wl_global_destroy(pointer_constraints->global);
free(pointer_constraints);
@ -345,6 +346,8 @@ struct wlr_pointer_constraints_v1 *wlr_pointer_constraints_v1_create(
pointer_constraints->global = wl_global;
wl_list_init(&pointer_constraints->constraints);
wl_signal_init(&pointer_constraints->events.destroy);
wl_signal_init(&pointer_constraints->events.new_constraint);
pointer_constraints->display_destroy.notify = handle_display_destroy;

View file

@ -114,7 +114,7 @@ static const struct ext_transient_seat_manager_v1_interface manager_impl = {
static void handle_display_destroy(struct wl_listener *listener, void *data) {
struct wlr_transient_seat_manager_v1 *manager =
wl_container_of(listener, manager, display_destroy);
wl_signal_emit_mutable(&manager->events.destroy, NULL);
wl_list_remove(&manager->display_destroy.link);
wl_global_destroy(manager->global);
free(manager);
@ -154,6 +154,7 @@ struct wlr_transient_seat_manager_v1 *wlr_transient_seat_manager_v1_create(
manager->display_destroy.notify = handle_display_destroy;
wl_display_add_destroy_listener(display, &manager->display_destroy);
wl_signal_init(&manager->events.destroy);
wl_signal_init(&manager->events.create_seat);
return manager;

View file

@ -51,6 +51,7 @@ static void bell_bind(struct wl_client *client, void *data,
static void handle_display_destroy(struct wl_listener *listener, void *data) {
struct wlr_xdg_system_bell_v1 *bell = wl_container_of(listener, bell, display_destroy);
wl_signal_emit_mutable(&bell->events.destroy, NULL);
wl_list_remove(&bell->display_destroy.link);
wl_global_destroy(bell->global);
free(bell);
@ -75,6 +76,7 @@ struct wlr_xdg_system_bell_v1 *wlr_xdg_system_bell_v1_create(struct wl_display *
bell->display_destroy.notify = handle_display_destroy;
wl_display_add_destroy_listener(display, &bell->display_destroy);
wl_signal_init(&bell->events.destroy);
wl_signal_init(&bell->events.ring);
return bell;