From a15349b29cf2934323c7593bbb7dfbd3424a8ed5 Mon Sep 17 00:00:00 2001 From: aromanos Date: Fri, 1 May 2015 19:01:11 +0200 Subject: [PATCH] Handle sensors of radeon & nouveau drivers as GPUs --- .../extension.js | 3 +- .../sensorsUtil.js | 35 ++++++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/freon@UshakovVasilii_Github.yahoo.com/extension.js b/freon@UshakovVasilii_Github.yahoo.com/extension.js index f299d63..a34ed70 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/extension.js +++ b/freon@UshakovVasilii_Github.yahoo.com/extension.js @@ -235,7 +235,8 @@ const FreonMenuButton = new Lang.Class({ }, _updateDisplay: function(){ - let gpuTempInfo = []; + let gpuTempInfo = this._utils.sensors.gpu; + if (this._utils.gpu && this._utils.gpu.available) gpuTempInfo = gpuTempInfo.concat(this._utils.gpu.temp); diff --git a/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js b/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js index 5bfe887..53722e8 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js @@ -15,24 +15,39 @@ const SensorsUtil = new Lang.Class({ }, get temp() { - let s = this._parseSensorsOutput(this._parseSensorsTemperatureLine); + let s = this._parseGenericSensorsOutput(this._parseSensorsTemperatureLine); + return s.filter(function(e){ + return e.temp > 0 && e.temp < 115; + }); + }, + + get gpu() { + let s = this._parseGpuSensorsOutput(this._parseSensorsTemperatureLine); return s.filter(function(e){ return e.temp > 0 && e.temp < 115; }); }, get rpm() { - let s = this._parseSensorsOutput(this._parseFanRPMLine); + let s = this._parseGenericSensorsOutput(this._parseFanRPMLine); return s.filter(function(e){ return e.rpm > 0; }); }, get volt() { - return this._parseSensorsOutput(this._parseVoltageLine); + return this._parseGenericSensorsOutput(this._parseVoltageLine); }, - _parseSensorsOutput: function(parser) { + _parseGenericSensorsOutput: function(parser) { + return this._parseSensorsOutput(parser, false); + }, + + _parseGpuSensorsOutput: function(parser) { + return this._parseSensorsOutput(parser, true); + }, + + _parseSensorsOutput: function(parser, gpuFlag) { if(!this._output) return []; @@ -41,8 +56,18 @@ const SensorsUtil = new Lang.Class({ let sensors = []; //iterate through each lines for(let i = 0; i < this._output.length; i++){ - // ignore chipset driver name and 'Adapter:' line for now + + let isGpuDriver = this._output[i].indexOf("radeon") != -1 + || this._output[i].indexOf("nouveau") != -1; + + if (gpuFlag != isGpuDriver) { + // skip driver if gpu requested and driver is not a gpu or the opposite + continue; + } + + // skip chipset driver name and 'Adapter:' lines i += 2; + // get every feature of the chip while(this._output[i]){ // if it is not a continutation of a feature line