xwayland-unmanaged: wl_list_remove() missing listeners on destroy

This commit is contained in:
Johan Malm 2022-06-05 22:10:15 +01:00 committed by Consolatis
parent cbc80c196c
commit 71f8aca66b

View file

@ -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;