aboutsummaryrefslogtreecommitdiff
path: root/backend/drm/atomic.c
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-01-07 00:28:21 +0100
committeremersion <contact@emersion.fr>2018-01-07 00:28:21 +0100
commit53ba9b4eec4345cb5ba6640e8677f3b2477d2693 (patch)
tree3446e7438b2284e8c60da987a35d49546c7795db /backend/drm/atomic.c
parent8ebd7d4dbebc89aedf5e08d30ebcb5326b92f80b (diff)
Fix output enable in DRM backend
Diffstat (limited to 'backend/drm/atomic.c')
-rw-r--r--backend/drm/atomic.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/backend/drm/atomic.c b/backend/drm/atomic.c
index e7374a00..8d98bac2 100644
--- a/backend/drm/atomic.c
+++ b/backend/drm/atomic.c
@@ -123,14 +123,22 @@ static bool atomic_crtc_pageflip(struct wlr_drm_backend *drm,
mode);
}
-static void atomic_conn_enable(struct wlr_drm_backend *drm,
+static bool atomic_conn_enable(struct wlr_drm_backend *drm,
struct wlr_drm_connector *conn, bool enable) {
struct wlr_drm_crtc *crtc = conn->crtc;
- struct atomic atom;
+ struct atomic atom;
atomic_begin(crtc, &atom);
atomic_add(&atom, crtc->id, crtc->props.active, enable);
- atomic_end(drm->fd, &atom);
+ if (enable) {
+ atomic_add(&atom, conn->id, conn->props.crtc_id, crtc->id);
+ atomic_add(&atom, crtc->id, crtc->props.mode_id, crtc->mode_id);
+ } else {
+ atomic_add(&atom, conn->id, conn->props.crtc_id, 0);
+ atomic_add(&atom, crtc->id, crtc->props.mode_id, 0);
+ }
+ return atomic_commit(drm->fd, &atom, conn, DRM_MODE_ATOMIC_ALLOW_MODESET,
+ true);
}
bool legacy_crtc_set_cursor(struct wlr_drm_backend *drm,