diff --git a/src/compositor-drm.c b/src/compositor-drm.c index fbf6e499a..44deaab20 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -1146,7 +1146,6 @@ drm_output_destroy(struct weston_output *output_base) weston_plane_release(&output->cursor_plane); weston_output_destroy(&output->base); - wl_list_remove(&output->base.link); free(output); } diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c index 09f165b37..e649d4330 100644 --- a/src/compositor-fbdev.c +++ b/src/compositor-fbdev.c @@ -692,7 +692,6 @@ fbdev_output_destroy(struct weston_output *base) } /* Remove the output. */ - wl_list_remove(&output->base.link); weston_output_destroy(&output->base); free(output); diff --git a/src/compositor-rpi.c b/src/compositor-rpi.c index 88ea8e026..1d52a94a8 100644 --- a/src/compositor-rpi.c +++ b/src/compositor-rpi.c @@ -278,7 +278,6 @@ rpi_output_destroy(struct weston_output *base) */ rpi_flippipe_release(&output->flippipe); - wl_list_remove(&output->base.link); weston_output_destroy(&output->base); vc_dispmanx_display_close(output->display); diff --git a/src/compositor-x11.c b/src/compositor-x11.c index 6e507f916..9a36b59d8 100644 --- a/src/compositor-x11.c +++ b/src/compositor-x11.c @@ -483,7 +483,6 @@ x11_output_destroy(struct weston_output *output_base) struct x11_compositor *compositor = (struct x11_compositor *)output->base.compositor; - wl_list_remove(&output->base.link); wl_event_source_remove(output->finish_frame_timer); if (compositor->use_pixman) { diff --git a/src/compositor.c b/src/compositor.c index 8f4bdefc4..0e739e397 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -2996,6 +2996,8 @@ bind_output(struct wl_client *client, WL_EXPORT void weston_output_destroy(struct weston_output *output) { + wl_list_remove(&output->link); + wl_signal_emit(&output->destroy_signal, output); free(output->name);