diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 0c8a5fd41..405a578f6 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -854,9 +854,6 @@ static void handle_destroy(struct wl_listener *listener, void *data) { wlr_damage_ring_finish(&output->damage_ring); - output->wlr_output->data = NULL; - output->wlr_output = NULL; - transaction_commit_dirty(); update_output_manager_config(server); diff --git a/sway/server.c b/sway/server.c index 244c7aec8..e94765d1d 100644 --- a/sway/server.c +++ b/sway/server.c @@ -285,6 +285,9 @@ void server_fini(struct sway_server *server) { wl_display_destroy_clients(server->wl_display); wl_display_destroy(server->wl_display); list_free(server->dirty_nodes); + list_free(root->fallback_output->workspaces); + list_free(root->fallback_output->current.workspaces); + free(root->fallback_output); } bool server_start(struct sway_server *server) { diff --git a/sway/tree/output.c b/sway/tree/output.c index eccab2f72..52a209898 100644 --- a/sway/tree/output.c +++ b/sway/tree/output.c @@ -230,10 +230,6 @@ void output_destroy(struct sway_output *output) { "Tried to free output which wasn't marked as destroying")) { return; } - if (!sway_assert(output->wlr_output == NULL, - "Tried to free output which still had a wlr_output")) { - return; - } if (!sway_assert(output->node.ntxnrefs == 0, "Tried to free output " "which is still referenced by transactions")) { return;