scene: destroy addons before cleaning up internal state

This allows addons to access wlr_scene_node/wlr_scene_surface
fields to clean up themselves.
This commit is contained in:
Simon Ser 2022-11-08 17:43:49 +01:00 committed by Alexander Orzechowski
parent 24c149fefb
commit 440d7fa072

View file

@ -87,6 +87,7 @@ void wlr_scene_node_destroy(struct wlr_scene_node *node) {
// in case the destroy signal would like to remove children before they // in case the destroy signal would like to remove children before they
// are recursively destroyed. // are recursively destroyed.
wl_signal_emit_mutable(&node->events.destroy, NULL); wl_signal_emit_mutable(&node->events.destroy, NULL);
wlr_addon_set_finish(&node->addons);
wlr_scene_node_set_enabled(node, false); wlr_scene_node_set_enabled(node, false);
@ -130,7 +131,6 @@ void wlr_scene_node_destroy(struct wlr_scene_node *node) {
} }
} }
wlr_addon_set_finish(&node->addons);
wl_list_remove(&node->link); wl_list_remove(&node->link);
pixman_region32_fini(&node->visible); pixman_region32_fini(&node->visible);
free(node); free(node);