From be35f67bc910cdd2c330cc188dba3f9af4ddd7f3 Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Fri, 8 Jun 2018 13:59:22 -0700 Subject: [PATCH] Better CPU frequency detection for Linux --- hecl-gui/SysReqTableView.cpp | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/hecl-gui/SysReqTableView.cpp b/hecl-gui/SysReqTableView.cpp index 82f52e508..a838967d1 100644 --- a/hecl-gui/SysReqTableView.cpp +++ b/hecl-gui/SysReqTableView.cpp @@ -9,6 +9,7 @@ #include #include #include "FindBlender.hpp" +#include #if _WIN32 #include @@ -45,23 +46,12 @@ SysReqTableModel::SysReqTableModel(QObject* parent) : QAbstractTableModel(parent) { #ifdef __linux__ - QProcess lscpuProc; - lscpuProc.start("lscpu", {"-J"}, QProcess::ReadOnly); - lscpuProc.waitForFinished(); - QJsonDocument lscpu = QJsonDocument::fromJson(lscpuProc.readAll()); - QJsonValue lscpuObj = lscpu.object().take("lscpu"); - if (lscpuObj.type() == QJsonValue::Array) + QFile file("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"); + if (file.open(QFile::ReadOnly)) { - for (const QJsonValue& v: lscpuObj.toArray()) - { - QJsonObject vObj = v.toObject(); - if (vObj.take("field").toString() == "CPU max MHz:") - { - double speed = vObj.take("data").toString().toDouble(); - m_cpuSpeed = speed; - m_cpuSpeedStr.sprintf("%g GHz", speed / 1000.0); - } - } + QString str(file.readAll()); + m_cpuSpeed = str.toInt() / 1000; + m_cpuSpeedStr.sprintf("%g GHz", m_cpuSpeed / 1000.0); } #elif defined(__APPLE__) QProcess spProc;