]> git.mdlowis.com Git - proto/labwc.git/commitdiff
xwayland-unmanaged: wl_list_remove() missing listeners on destroy
authorJohan Malm <jgm323@gmail.com>
Sun, 5 Jun 2022 21:10:15 +0000 (22:10 +0100)
committerConsolatis <35009135+Consolatis@users.noreply.github.com>
Sun, 5 Jun 2022 21:34:04 +0000 (23:34 +0200)
src/xwayland-unmanaged.c

index 5a8e2f47a8b4fe860d4109c651ae5704e0381a4b..5014e61040cb4225ef09c55a92b977aa2a3a67ba 100644 (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;