From 71f8aca66be5d90b6a27c3afce20b5cd5bd73e20 Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Sun, 5 Jun 2022 22:10:15 +0100 Subject: [PATCH] xwayland-unmanaged: wl_list_remove() missing listeners on destroy --- src/xwayland-unmanaged.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/xwayland-unmanaged.c b/src/xwayland-unmanaged.c index 5a8e2f47..5014e610 100644 --- a/src/xwayland-unmanaged.c +++ b/src/xwayland-unmanaged.c @@ -106,6 +106,9 @@ unmanaged_handle_destroy(struct wl_listener *listener, void *data) { struct xwayland_unmanaged *unmanaged = wl_container_of(listener, unmanaged, destroy); + wl_list_remove(&unmanaged->request_configure.link); + wl_list_remove(&unmanaged->override_redirect.link); + wl_list_remove(&unmanaged->request_activate.link); wl_list_remove(&unmanaged->map.link); wl_list_remove(&unmanaged->unmap.link); wl_list_remove(&unmanaged->destroy.link); @@ -132,14 +135,18 @@ xwayland_unmanaged_create(struct server *server, unmanaged = calloc(1, sizeof(struct xwayland_unmanaged)); unmanaged->server = server; unmanaged->xwayland_surface = xsurface; + wl_signal_add(&xsurface->events.request_configure, &unmanaged->request_configure); unmanaged->request_configure.notify = unmanaged_handle_request_configure; + wl_signal_add(&xsurface->events.map, &unmanaged->map); unmanaged->map.notify = unmanaged_handle_map; + wl_signal_add(&xsurface->events.unmap, &unmanaged->unmap); unmanaged->unmap.notify = unmanaged_handle_unmap; + wl_signal_add(&xsurface->events.destroy, &unmanaged->destroy); unmanaged->destroy.notify = unmanaged_handle_destroy;