ctm: enable fade animation on nvidia driver versions 575 and above (#10095)
* ctm: enable fade animation on nvidia driver versions 575 and above * format if statement without braces; handle potential throw when checking for nvidia version file
This commit is contained in:
parent
02f7da2bf2
commit
51afc2c291
4 changed files with 45 additions and 37 deletions
|
|
@ -817,3 +817,38 @@ float stringToPercentage(const std::string& VALUE, const float REL) {
|
|||
else
|
||||
return std::stof(VALUE);
|
||||
}
|
||||
|
||||
// Checks if Nvidia driver major version is at least given version.
|
||||
// Useful for explicit_sync_kms and ctm_animation as they only work
|
||||
// past certain driver versions.
|
||||
bool isNvidiaDriverVersionAtLeast(int threshold) {
|
||||
static int driverMajor = 0;
|
||||
static bool once = true;
|
||||
|
||||
if (once) {
|
||||
once = false;
|
||||
|
||||
std::error_code ec;
|
||||
if (std::filesystem::exists("/sys/module/nvidia_drm/version", ec) && !ec) {
|
||||
std::ifstream ifs("/sys/module/nvidia_drm/version");
|
||||
if (ifs.good()) {
|
||||
try {
|
||||
std::string driverInfo((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>()));
|
||||
|
||||
size_t firstDot = driverInfo.find('.');
|
||||
if (firstDot != std::string::npos)
|
||||
driverMajor = std::stoi(driverInfo.substr(0, firstDot));
|
||||
|
||||
Debug::log(LOG, "Parsed NVIDIA major version: {}", driverMajor);
|
||||
|
||||
} catch (std::exception& e) {
|
||||
driverMajor = 0; // Default to 0 if parsing fails
|
||||
}
|
||||
|
||||
ifs.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return driverMajor >= threshold;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue