From 0341e28e05b0cc39cf6b4db2d6b85faced3a6091 Mon Sep 17 00:00:00 2001 From: Self Denial Date: Mon, 2 Oct 2023 01:52:17 -0600 Subject: [PATCH] Move num_coolers to global var & update at init within checkXNVCtrl(). --- src/nvctrl.cpp | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/src/nvctrl.cpp b/src/nvctrl.cpp index 0203cf08..6ceba3af 100644 --- a/src/nvctrl.cpp +++ b/src/nvctrl.cpp @@ -16,6 +16,7 @@ static std::unique_ptr> display; struct nvctrlInfo nvctrl_info; bool nvctrlSuccess = false; +int num_coolers = 0; static bool find_nv_x11(libnvctrl_loader& nvctrl, Display*& dpy) { @@ -71,6 +72,11 @@ bool checkXNVCtrl() &pci_id); deviceID = (pci_id & 0xFFFF); + // get number of coolers at init + nvctrl.XNVCTRLQueryTargetCount(display.get(), + NV_CTRL_TARGET_TYPE_COOLER, + &num_coolers); + return true; } @@ -162,26 +168,15 @@ void getNvctrlInfo(){ } int64_t getNvctrlFanSpeed(){ - auto& nvctrl = get_libnvctrl_loader(); int64_t fan_speed = 0; - /* Get the number of Cooler devices in the system */ - int num_coolers; - bool ret = nvctrl.XNVCTRLQueryTargetCount(display.get(), - NV_CTRL_TARGET_TYPE_COOLER, - &num_coolers); - if (!ret) { - SPDLOG_ERROR("XNVCtrl Failed to query number of Coolers"); - } else { - SPDLOG_DEBUG("XNVCtrl number of Cooler Devices: {}", num_coolers); - if (num_coolers <= 0) { - return fan_speed; - } + if (num_coolers >= 1) { + auto& nvctrl = get_libnvctrl_loader(); + nvctrl.XNVCTRLQueryTargetAttribute64(display.get(), + NV_CTRL_TARGET_TYPE_COOLER, + 0, + 0, + NV_CTRL_THERMAL_COOLER_SPEED, + &fan_speed); } - nvctrl.XNVCTRLQueryTargetAttribute64(display.get(), - NV_CTRL_TARGET_TYPE_COOLER, - 0, - 0, - NV_CTRL_THERMAL_COOLER_SPEED, - &fan_speed); return fan_speed; }