Monitor (Linux): fix EDID file reading

Its file length is always 0
This commit is contained in:
李通洲
2023-08-15 19:19:26 +08:00
parent c70787bde9
commit 20c2cdf7ba
+4 -11
View File
@@ -3,7 +3,6 @@
#include "common/io/io.h"
#include "util/edidHelper.h"
#include "util/stringUtils.h"
#include "util/mallocHelper.h"
#include <dirent.h>
#include <sys/stat.h>
@@ -30,15 +29,9 @@ const char* ffDetectMonitor(FFlist* results)
ffStrbufAppendS(&drmDir, entry->d_name);
ffStrbufAppendS(&drmDir, "/edid");
struct stat fileStat;
if (stat(drmDir.chars, &fileStat) < 0 || fileStat.st_size == 0 || fileStat.st_size % 128 != 0)
{
ffStrbufSubstrBefore(&drmDir, drmDirLength);
continue;
}
FF_AUTO_FREE uint8_t* edidData = malloc((size_t) fileStat.st_size);
if(ffReadFileData(drmDir.chars, sizeof(edidData), edidData) != sizeof(edidData))
uint8_t edidData[512];
ssize_t edidLength = ffReadFileData(drmDir.chars, sizeof(edidData), edidData);
if(edidLength <= 0 || edidLength % 128 != 0)
{
ffStrbufSubstrBefore(&drmDir, drmDirLength);
continue;
@@ -54,7 +47,7 @@ const char* ffDetectMonitor(FFlist* results)
ffStrbufInit(&display->name);
ffEdidGetName(edidData, &display->name);
ffEdidGetPhysicalSize(edidData, &display->physicalWidth, &display->physicalHeight);
display->hdrCompatible = ffEdidGetHdrCompatible(edidData, (uint32_t) fileStat.st_size);
display->hdrCompatible = ffEdidGetHdrCompatible(edidData, (uint32_t) edidLength);
}
ffStrbufSubstrBefore(&drmDir, drmDirLength);