compositor: Fix removal of an output
This uses the more safer version of signal emission to avoid a potential
crash when the output is destroyed that will follow a surface/view
destruction for which it has a listener attached (to the output_destroy
signal).
Fixes: #734
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
diff --git a/libweston/compositor.c b/libweston/compositor.c
index c99aa29..fb3b709 100644
--- a/libweston/compositor.c
+++ b/libweston/compositor.c
@@ -6414,8 +6414,8 @@
wl_list_insert(compositor->pending_output_list.prev, &output->link);
output->enabled = false;
- wl_signal_emit(&compositor->output_destroyed_signal, output);
- wl_signal_emit(&output->destroy_signal, output);
+ weston_signal_emit_mutable(&compositor->output_destroyed_signal, output);
+ weston_signal_emit_mutable(&output->destroy_signal, output);
wl_list_for_each(head, &output->head_list, output_link)
weston_head_remove_global(head);