[PATCH weston RFC] compositor: Move all views to a new primary output

Armin Krezović krezovic.armin at gmail.com
Thu Jun 30 04:29:48 UTC 2016


When primary output gets disconnected and there
were views created, they won't get assigned a
new output when a new primary output gets plugged
in. This will lead to crashes when weston tries
to use an already destroyed output.

This fixes the problems by force-moving all views
to the newly attached output if there were no
outputs present.

Signed-off-by: Armin Krezović <krezovic.armin at gmail.com>
---
 libweston/compositor.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/libweston/compositor.c b/libweston/compositor.c
index eb9e8d9..62687cf 100644
--- a/libweston/compositor.c
+++ b/libweston/compositor.c
@@ -4313,8 +4313,18 @@ WL_EXPORT void
 weston_compositor_add_output(struct weston_compositor *compositor,
                              struct weston_output *output)
 {
+	struct weston_view *view;
+	int reassign_outputs = 0;
+
+	if (wl_list_empty(&compositor->output_list))
+		reassign_outputs = 1;
+
 	wl_list_insert(compositor->output_list.prev, &output->link);
 	wl_signal_emit(&compositor->output_created_signal, output);
+
+	if (reassign_outputs)
+		wl_list_for_each(view, &compositor->view_list, link)
+			weston_view_assign_output(view);
 }
 
 WL_EXPORT void
-- 
2.9.0



More information about the wayland-devel mailing list