From b87660561fd3b48e55a26febac4aa5cd6b459172 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Sat, 1 Oct 2022 21:10:34 -0230 Subject: [PATCH] drm: Fix respecting custom mode refresh rates This was being overwritten by some dynamic refresh code. --- src/drm.cpp | 7 +++++++ src/drm.hpp | 2 ++ 2 files changed, 9 insertions(+) diff --git a/src/drm.cpp b/src/drm.cpp index 21e0d2b..6994220 100644 --- a/src/drm.cpp +++ b/src/drm.cpp @@ -493,6 +493,8 @@ static bool refresh_state( drm_t *drm ) conn->current.crtc_id = conn->initial_prop_values["CRTC_ID"]; + conn->target_refresh = 0; + drm_log.debugf("found new connector '%s'", conn->name); } @@ -755,6 +757,8 @@ static bool setup_best_connector(struct drm_t *drm, bool force) return false; } + best->target_refresh = mode->vrefresh; + if (!drm_set_mode(drm, mode)) { return false; } @@ -2280,6 +2284,9 @@ int drm_get_default_refresh(struct drm_t *drm) if ( drm->preferred_refresh ) return drm->preferred_refresh; + if ( drm->connector && drm->connector->target_refresh ) + return drm->connector->target_refresh; + if ( drm->connector && drm->connector->connector ) { drmModeConnector *connector = drm->connector->connector; diff --git a/src/drm.hpp b/src/drm.hpp index fabda88..cb4256a 100644 --- a/src/drm.hpp +++ b/src/drm.hpp @@ -87,6 +87,8 @@ struct connector { char *make; char *model; + int target_refresh; + struct { uint32_t crtc_id; } current, pending;