When all outputs are gone and views were created before they were gone, all views would have an output that points to a destroyed object.
Instead, mark the view as dirty and set the view output to NULL so a view gets an output assigned as soon as it gets plugged in. Signed-off-by: Armin Krezović <krezovic.ar...@gmail.com> --- libweston/compositor.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/libweston/compositor.c b/libweston/compositor.c index 96eeb17..4467555 100644 --- a/libweston/compositor.c +++ b/libweston/compositor.c @@ -1212,10 +1212,14 @@ get_view_layer(struct weston_view *view) WL_EXPORT void weston_view_update_transform(struct weston_view *view) { + struct weston_compositor *ec = view->surface->compositor;; struct weston_view *parent = view->geometry.parent; struct weston_layer *layer; pixman_region32_t mask; + if (wl_list_empty(&ec->output_list)) + return; + if (!view->transform.dirty) return; @@ -4085,11 +4089,6 @@ weston_output_destroy(struct weston_output *output) output->destroying = 1; - wl_list_for_each(view, &output->compositor->view_list, link) { - if (view->output_mask & (1u << output->id)) - weston_view_assign_output(view); - } - wl_event_source_remove(output->repaint_timer); weston_presentation_feedback_discard_list(&output->feedback_list); @@ -4097,6 +4096,16 @@ weston_output_destroy(struct weston_output *output) weston_compositor_reflow_outputs(output->compositor, output, output->width); wl_list_remove(&output->link); + wl_list_for_each(view, &output->compositor->view_list, link) { + if (wl_list_empty(&output->compositor->output_list)) { + weston_view_geometry_dirty(view); + view->output = NULL; + } + else if (view->output_mask & (1u << output->id)) { + weston_view_assign_output(view); + } + } + wl_signal_emit(&output->compositor->output_destroyed_signal, output); wl_signal_emit(&output->destroy_signal, output); -- 2.9.2 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel