From 2ba878cbab13de5b08a1834c4c4d6aca0f16f5ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sat, 6 Jan 2024 19:12:36 +0800 Subject: [PATCH] Monitor (Linux): fix detection with Nvidia drivers NVIDIA DRM driver reports `enabled` to be `disabled` --- CHANGELOG.md | 1 + src/detection/monitor/monitor_linux.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 175bfc791..e62674db2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ Bugfixes: * Fix support of macOS Sonoma (Wallpaper, macOS) * Fix overall memory leaks (macOS) * Remove trailing `\0` in JSON results (FreeBSD) +* Fix physical monitor detection with Nvidia drivers (Monitor, Linux) # 2.5.0 diff --git a/src/detection/monitor/monitor_linux.c b/src/detection/monitor/monitor_linux.c index 507efdfa2..3b2ef1ea7 100644 --- a/src/detection/monitor/monitor_linux.c +++ b/src/detection/monitor/monitor_linux.c @@ -29,10 +29,10 @@ const char* ffDetectMonitor(FFlist* results) ffStrbufAppendS(&drmDir, entry->d_name); uint32_t drmDirWithDnameLength = drmDir.length; - ffStrbufAppendS(&drmDir, "/enabled"); - char enabled = 'd'; // disabled - ffReadFileData(drmDir.chars, sizeof(enabled), &enabled); - if (enabled != 'e') // enabled + ffStrbufAppendS(&drmDir, "/status"); + char status = 'd'; // disconnected + ffReadFileData(drmDir.chars, sizeof(status), &status); + if (status != 'c') // connected { ffStrbufSubstrBefore(&drmDir, drmDirLength); continue;