diff --git a/types/output/output.c b/types/output/output.c index 08a71d832..af2fab5e1 100644 --- a/types/output/output.c +++ b/types/output/output.c @@ -450,11 +450,12 @@ void wlr_output_destroy(struct wlr_output *output) { return; } + wl_signal_emit_mutable(&output->events.destroy, output); + wl_list_remove(&output->display_destroy.link); wlr_output_destroy_global(output); output_clear_back_buffer(output); - wl_signal_emit_mutable(&output->events.destroy, output); wlr_addon_set_finish(&output->addons); // The backend is responsible for free-ing the list of modes