From b2c2b5ee21d10e40c0d3a0fde2f3508f39f7ff9f Mon Sep 17 00:00:00 2001 From: Crydsch Date: Mon, 9 May 2022 17:12:38 +0200 Subject: [PATCH] remove fps requirement for drm connector selection (#2468) --- src/rcore.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/rcore.c b/src/rcore.c index d899317b3..552ad2012 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -6591,7 +6591,7 @@ static int FindNearestConnectorMode(const drmModeConnector *connector, uint widt TRACELOG(LOG_TRACE, "DISPLAY: DRM mode: %d %ux%u@%u %s", i, mode->hdisplay, mode->vdisplay, mode->vrefresh, (mode->flags & DRM_MODE_FLAG_INTERLACE) ? "interlaced" : "progressive"); - if ((mode->hdisplay < width) || (mode->vdisplay < height) || (mode->vrefresh < fps)) + if ((mode->hdisplay < width) || (mode->vdisplay < height)) { TRACELOG(LOG_TRACE, "DISPLAY: DRM mode is too small"); continue; @@ -6603,23 +6603,22 @@ static int FindNearestConnectorMode(const drmModeConnector *connector, uint widt continue; } - if ((mode->hdisplay >= width) && (mode->vdisplay >= height) && (mode->vrefresh >= fps)) + if (nearestIndex < 0) { - const int widthDiff = mode->hdisplay - width; - const int heightDiff = mode->vdisplay - height; - const int fpsDiff = mode->vrefresh - fps; + nearestIndex = i; + continue; + } - if (nearestIndex < 0) - { - nearestIndex = i; - continue; - } + const int widthDiff = abs(mode->hdisplay - width); + const int heightDiff = abs(mode->vdisplay - height); + const int fpsDiff = abs(mode->vrefresh - fps); - const int nearestWidthDiff = CORE.Window.connector->modes[nearestIndex].hdisplay - width; - const int nearestHeightDiff = CORE.Window.connector->modes[nearestIndex].vdisplay - height; - const int nearestFpsDiff = CORE.Window.connector->modes[nearestIndex].vrefresh - fps; + const int nearestWidthDiff = abs(CORE.Window.connector->modes[nearestIndex].hdisplay - width); + const int nearestHeightDiff = abs(CORE.Window.connector->modes[nearestIndex].vdisplay - height); + const int nearestFpsDiff = abs(CORE.Window.connector->modes[nearestIndex].vrefresh - fps); - if ((widthDiff < nearestWidthDiff) || (heightDiff < nearestHeightDiff) || (fpsDiff < nearestFpsDiff)) nearestIndex = i; + if ((widthDiff < nearestWidthDiff) || (heightDiff < nearestHeightDiff) || (fpsDiff < nearestFpsDiff)) { + nearestIndex = i; } }