compositor-drm: head attach requires a modeset

For the attach on an enabled output to have an effect, we need to go
through drmModeSetCrtc or ATOMIC_ALLOW_MODESET.

v9:
- Add another XXX comment.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
dev
Pekka Paalanen 7 years ago
parent 7f853799e2
commit d5f98d8932
  1. 18
      libweston/compositor-drm.c

@ -4388,9 +4388,27 @@ static int
drm_output_attach_head(struct weston_output *output_base, drm_output_attach_head(struct weston_output *output_base,
struct weston_head *head_base) struct weston_head *head_base)
{ {
struct drm_backend *b = to_drm_backend(output_base->compositor);
if (wl_list_length(&output_base->head_list) >= MAX_CLONED_CONNECTORS) if (wl_list_length(&output_base->head_list) >= MAX_CLONED_CONNECTORS)
return -1; return -1;
if (!output_base->enabled)
return 0;
/* XXX: ensure the configuration will work.
* This is actually impossible without major infrastructure
* work. */
/* Need to go through modeset to add connectors. */
/* XXX: Ideally we'd do this per-output, not globally. */
/* XXX: Doing it globally, what guarantees another output's update
* will not clear the flag before this output is updated?
*/
b->state_invalid = true;
weston_output_schedule_repaint(output_base);
return 0; return 0;
} }

Loading…
Cancel
Save