From f749fc37820ff7339d623b628b5b425f2205d68e Mon Sep 17 00:00:00 2001 From: Ander Conselvan de Oliveira Date: Fri, 13 Dec 2013 22:10:50 +0200 Subject: [PATCH] compositor: Remove output from list in weston_output_destroy() When destroying ouputs, they would sometimes be removed before the call to weston_output_destory() and sometimes after, depending on the backend. Now the output is remove withing that function so the behavior is standard across all backends. --- src/compositor-drm.c | 1 - src/compositor-fbdev.c | 1 - src/compositor-rpi.c | 1 - src/compositor-x11.c | 1 - src/compositor.c | 2 ++ 5 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/compositor-drm.c b/src/compositor-drm.c index fbf6e499..44deaab2 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 09f165b3..e649d433 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 88ea8e02..1d52a94a 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 6e507f91..9a36b59d 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 8f4bdefc..0e739e39 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);