From: Pekka Paalanen <pekka.paala...@collabora.co.uk> Fix this function to support more than one head per output.
Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> --- libweston/compositor-drm.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c index e1feeab4..965efafd 100644 --- a/libweston/compositor-drm.c +++ b/libweston/compositor-drm.c @@ -2072,10 +2072,10 @@ drm_output_apply_state_atomic(struct drm_output_state *state, uint32_t *flags) { struct drm_output *output = state->output; - struct drm_head *head = to_drm_head(weston_output_get_first_head(&output->base)); struct drm_backend *backend = to_drm_backend(output->base.compositor); struct drm_plane_state *plane_state; struct drm_mode *current_mode = to_drm_mode(output->base.current_mode); + struct drm_head *head; int ret = 0; if (state->dpms != output->state_cur->dpms) @@ -2089,12 +2089,17 @@ drm_output_apply_state_atomic(struct drm_output_state *state, ret |= crtc_add_prop(req, output, WDRM_CRTC_MODE_ID, current_mode->blob_id); ret |= crtc_add_prop(req, output, WDRM_CRTC_ACTIVE, 1); - ret |= connector_add_prop(req, head, WDRM_CONNECTOR_CRTC_ID, - output->crtc_id); + + wl_list_for_each(head, &output->base.head_list, base.output_link) { + ret |= connector_add_prop(req, head, WDRM_CONNECTOR_CRTC_ID, + output->crtc_id); + } } else { ret |= crtc_add_prop(req, output, WDRM_CRTC_MODE_ID, 0); ret |= crtc_add_prop(req, output, WDRM_CRTC_ACTIVE, 0); - ret |= connector_add_prop(req, head, WDRM_CONNECTOR_CRTC_ID, 0); + + wl_list_for_each(head, &output->base.head_list, base.output_link) + ret |= connector_add_prop(req, head, WDRM_CONNECTOR_CRTC_ID, 0); } if (ret != 0) { -- 2.13.6 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel