From: Pekka Paalanen <pekka.paala...@collabora.co.uk> Instead of iterating output_list and pending_output_list, iterate head_list to find outputs whose connectors have been disconnected.
This helps a following patch to move connector fields from drm_output to drm_head. Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> --- libweston/compositor-drm.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c index 67fda913..75820c5b 100644 --- a/libweston/compositor-drm.c +++ b/libweston/compositor-drm.c @@ -5215,7 +5215,8 @@ update_outputs(struct drm_backend *b, struct udev_device *drm_device) { drmModeConnector *connector; drmModeRes *resources; - struct drm_output *output, *next; + struct weston_head *base, *next; + struct drm_head *head; uint32_t *connected; int i; @@ -5256,30 +5257,17 @@ update_outputs(struct drm_backend *b, struct udev_device *drm_device) weston_log("connector %d connected\n", connector_id); } - wl_list_for_each_safe(output, next, &b->compositor->output_list, - base.link) { + wl_list_for_each_safe(base, next, + &b->compositor->head_list, compositor_link) { bool disconnected = true; - for (i = 0; i < resources->count_connectors; i++) { - if (connected[i] == output->connector_id) { - disconnected = false; - break; - } - } + head = to_drm_head(base); - if (!disconnected) + if (!head->output) continue; - weston_log("connector %d disconnected\n", output->connector_id); - drm_output_destroy(&output->base); - } - - wl_list_for_each_safe(output, next, &b->compositor->pending_output_list, - base.link) { - bool disconnected = true; - for (i = 0; i < resources->count_connectors; i++) { - if (connected[i] == output->connector_id) { + if (connected[i] == head->output->connector_id) { disconnected = false; break; } @@ -5288,8 +5276,8 @@ update_outputs(struct drm_backend *b, struct udev_device *drm_device) if (!disconnected) continue; - weston_log("connector %d disconnected\n", output->connector_id); - drm_output_destroy(&output->base); + weston_log("connector %d disconnected\n", head->output->connector_id); + drm_output_destroy(&head->output->base); } drm_backend_update_unused_outputs(b, resources); -- 2.13.6 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel