From 77c43c02147a298d330b512739fbebb278d1604c Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sat, 4 Oct 2025 18:34:50 +0800 Subject: [PATCH] Display (Linux): prefer resolutions reported by randr mode info --- src/detection/displayserver/linux/xcb.c | 6 +++--- src/detection/displayserver/linux/xlib.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/detection/displayserver/linux/xcb.c b/src/detection/displayserver/linux/xcb.c index 795e46bf2..d00020c10 100644 --- a/src/detection/displayserver/linux/xcb.c +++ b/src/detection/displayserver/linux/xcb.c @@ -215,8 +215,8 @@ static bool xcbRandrHandleOutput(XcbRandrData* data, xcb_randr_output_t output, FFDisplayResult* item = ffdsAppendDisplay( data->result, - (uint32_t) crtcInfoReply->width, - (uint32_t) crtcInfoReply->height, + (uint32_t) (currentMode ? currentMode->width : crtcInfoReply->width), + (uint32_t) (currentMode ? currentMode->height : crtcInfoReply->height), currentMode ? (double) currentMode->dot_clock / (double) ((uint32_t) currentMode->htotal * currentMode->vtotal) : 0, (uint32_t) (crtcInfoReply->width / scaleFactor + .5), (uint32_t) (crtcInfoReply->height / scaleFactor + .5), @@ -230,7 +230,7 @@ static bool xcbRandrHandleOutput(XcbRandrData* data, xcb_randr_output_t output, 0, (uint32_t) outputInfoReply->mm_width, (uint32_t) outputInfoReply->mm_height, - "xcb-randr-crtc" + currentMode ? "xcb-randr-mode" : "xcb-randr-crtc" ); if (item && edidLength) { diff --git a/src/detection/displayserver/linux/xlib.c b/src/detection/displayserver/linux/xlib.c index bc2e83a77..0d7aeea29 100644 --- a/src/detection/displayserver/linux/xlib.c +++ b/src/detection/displayserver/linux/xlib.c @@ -134,8 +134,8 @@ static bool xrandrHandleCrtc(XrandrData* data, XRROutputInfo* output, FFstrbuf* FFDisplayResult* item = ffdsAppendDisplay( data->result, - (uint32_t) crtcInfo->width, - (uint32_t) crtcInfo->height, + (uint32_t) (currentMode ? currentMode->width : crtcInfo->width), + (uint32_t) (currentMode ? currentMode->height : crtcInfo->height), currentMode ? (double) currentMode->dotClock / (double) ((uint32_t) currentMode->hTotal * currentMode->vTotal) : 0, (uint32_t) (crtcInfo->width / scaleFactor + .5), (uint32_t) (crtcInfo->height / scaleFactor + .5), @@ -149,7 +149,7 @@ static bool xrandrHandleCrtc(XrandrData* data, XRROutputInfo* output, FFstrbuf* 0, (uint32_t) output->mm_width, (uint32_t) output->mm_height, - "xlib-randr-crtc" + currentMode ? "xlib-randr-mode" : "xlib-randr-crtc" ); if (item)