diff --git a/backend/drm/atomic.c b/backend/drm/atomic.c index cdbb1ec1..fc73e2da 100644 --- a/backend/drm/atomic.c +++ b/backend/drm/atomic.c @@ -276,7 +276,7 @@ bool drm_atomic_connector_prepare(struct wlr_drm_connector_state *state, bool mo output->adaptive_sync_status == WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED; bool vrr_enabled = prev_vrr_enabled; if ((state->base->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED)) { - if (!drm_connector_supports_vrr(conn)) { + if (state->base->adaptive_sync_enabled && !drm_connector_supports_vrr(conn)) { return false; } vrr_enabled = state->base->adaptive_sync_enabled; diff --git a/backend/drm/legacy.c b/backend/drm/legacy.c index 1141d401..afa7f8fb 100644 --- a/backend/drm/legacy.c +++ b/backend/drm/legacy.c @@ -110,10 +110,11 @@ static bool legacy_crtc_commit(const struct wlr_drm_connector_state *state, } if (state->base->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED) { - if (!drm_connector_supports_vrr(conn)) { + if (state->base->adaptive_sync_enabled && !drm_connector_supports_vrr(conn)) { return false; } - if (drmModeObjectSetProperty(drm->fd, crtc->id, DRM_MODE_OBJECT_CRTC, + if (crtc->props.vrr_enabled != 0 && + drmModeObjectSetProperty(drm->fd, crtc->id, DRM_MODE_OBJECT_CRTC, crtc->props.vrr_enabled, state->base->adaptive_sync_enabled) != 0) { wlr_drm_conn_log_errno(conn, WLR_ERROR,