diff --git a/src/output.c b/src/output.c index 01d1d8d7..c1e6c03e 100644 --- a/src/output.c +++ b/src/output.c @@ -380,6 +380,7 @@ output_destroy_notify(struct wl_listener *listener, void *data) wl_list_remove(&output->link); wl_list_remove(&output->frame.link); wl_list_remove(&output->destroy.link); + free(output); } static void diff --git a/src/server.c b/src/server.c index 65b400e9..b19b17bc 100644 --- a/src/server.c +++ b/src/server.c @@ -211,15 +211,7 @@ server_finish(struct server *server) wl_display_destroy_clients(server->wl_display); seat_finish(server); + wlr_output_layout_destroy(server->output_layout); wl_display_destroy(server->wl_display); - - struct output *output, *next; - wl_list_for_each_safe (output, next, &server->outputs, link) { - info("remove output %p", output); - wl_list_remove(&output->link); - free(output); - } - - wlr_output_layout_destroy(server->output_layout); }