osd_on_view_destroy(view);
undecorate(view);
- if (view->scene_tree) {
- wlr_scene_node_destroy(&view->scene_tree->node);
- view->scene_tree = NULL;
- }
-
/*
* The layer-shell top-layer is disabled when an application is running
* in fullscreen mode, so if that's the case, we may have to re-enable
menu_close_root(server);
}
+ /*
+ * Destroy the view's scene tree. View methods assume this is non-NULL,
+ * so we should avoid any calls to those between this and freeing the
+ * view.
+ */
+ if (view->scene_tree) {
+ wlr_scene_node_destroy(&view->scene_tree->node);
+ view->scene_tree = NULL;
+ }
+
/* Remove view from server->views */
wl_list_remove(&view->link);
free(view);