From 54cc47cf306f4baf90f349343ad662161faba1fa Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Thu, 31 Aug 2017 11:58:41 +0300 Subject: [PATCH] compositor-drm: drm_output_find_by_connector from head_list Switch drm_output_find_by_connector() to search for the output by iterating the compositor's head_list. drm_head_find_by_connector() will be useful later on its own. As of "compositor-drm: start migration to head-based output API" the head list is guaranteed to contain all created drm_outputs through the automatically created drm_head. This simplifies the code a little, introduces drm_head_find_by_connector(), and works towards the eventual removal of drm_output_find_by_connector(). Signed-off-by: Pekka Paalanen Reviewed-by: Daniel Stone Acked-by: Derek Foreman --- libweston/compositor-drm.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c index d19f99c..f34e710 100644 --- a/libweston/compositor-drm.c +++ b/libweston/compositor-drm.c @@ -803,21 +803,31 @@ drm_output_find_by_crtc(struct drm_backend *b, uint32_t crtc_id) return NULL; } -static struct drm_output * -drm_output_find_by_connector(struct drm_backend *b, uint32_t connector_id) +static struct drm_head * +drm_head_find_by_connector(struct drm_backend *backend, uint32_t connector_id) { - struct drm_output *output; + struct weston_head *base; + struct drm_head *head; - wl_list_for_each(output, &b->compositor->output_list, base.link) { - if (output->connector_id == connector_id) - return output; + wl_list_for_each(base, + &backend->compositor->head_list, compositor_link) { + head = to_drm_head(base); + if (head->output && head->output->connector_id == connector_id) + return head; } - wl_list_for_each(output, &b->compositor->pending_output_list, - base.link) { - if (output->connector_id == connector_id) - return output; - } + return NULL; +} + +static struct drm_output * +drm_output_find_by_connector(struct drm_backend *b, uint32_t connector_id) +{ + struct drm_head *head; + + /* XXX: like the old version, this counts both enabled and disabled outputs */ + head = drm_head_find_by_connector(b, connector_id); + if (head && head->output) + return head->output; return NULL; } -- 2.7.4