From 0b12e73eefe9289456fd0380324212a01efe8966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 9 Jan 2023 10:42:52 +0800 Subject: [PATCH] DisplayServer: make brightness detection actually work (Linux) --- src/detection/displayserver/linux/displayserver_linux.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/detection/displayserver/linux/displayserver_linux.c b/src/detection/displayserver/linux/displayserver_linux.c index 51639f9e8..f2e0910b1 100644 --- a/src/detection/displayserver/linux/displayserver_linux.c +++ b/src/detection/displayserver/linux/displayserver_linux.c @@ -25,15 +25,18 @@ static void parseBacklight(FFDisplayServerResult* result) ffStrbufInit(&buffer); struct dirent* entry; - if((entry = readdir(dirp)) != NULL) + while((entry = readdir(dirp)) != NULL) { + if(strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) + continue; + ffStrbufAppendS(&backlightDir, entry->d_name); ffStrbufAppendS(&backlightDir, "/actual_brightness"); if(ffReadFileBuffer(backlightDir.chars, &buffer)) { double actualBrightness = ffStrbufToDouble(&buffer); ffStrbufSubstrBefore(&backlightDir, backlightDirLength); - + ffStrbufAppendS(&backlightDir, entry->d_name); ffStrbufAppendS(&backlightDir, "/max_brightness"); if(ffReadFileBuffer(backlightDir.chars, &buffer)) { @@ -43,6 +46,8 @@ static void parseBacklight(FFDisplayServerResult* result) resolution->brightness = (int) (actualBrightness * 100 / maxBrightness); } } + + break; } }