Fixed restoration of the panel divider position.
[psensor.git] / src / lib / lmsensor.c
index d72da3e..6f3845d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010-2014 jeanfi@gmail.com
+ * Copyright (C) 2010-2016 jeanfi@gmail.com
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -124,7 +124,7 @@ void lmsensor_psensor_list_update(struct psensor **sensors)
        struct psensor *s;
        double v;
 
-       if (!init_done)
+       if (!init_done || !sensors)
                return;
 
        while (*sensors) {
@@ -156,15 +156,20 @@ lmsensor_psensor_create(const sensors_chip_name *chip,
        int type;
        char *id, *label, *cname;
        struct psensor *psensor;
-       sensors_subfeature_type fault_subfeature;
+       sensors_subfeature_type fault_subfeature, min_subfeature,
+               max_subfeature;
 
        if (sensors_snprintf_chip_name(name, 200, chip) < 0)
                return NULL;
 
        if (feature->type == SENSORS_FEATURE_TEMP) {
                fault_subfeature = SENSORS_SUBFEATURE_TEMP_FAULT;
+               max_subfeature = SENSORS_SUBFEATURE_TEMP_MAX;
+               min_subfeature = SENSORS_SUBFEATURE_TEMP_MIN;
        } else if (feature->type == SENSORS_FEATURE_FAN) {
                fault_subfeature = SENSORS_SUBFEATURE_FAN_FAULT;
+               max_subfeature = SENSORS_SUBFEATURE_FAN_MAX;
+               min_subfeature = SENSORS_SUBFEATURE_FAN_MIN;
        } else {
                log_err(_("%s: Wrong feature type."), PROVIDER_NAME);
                return NULL;
@@ -211,6 +216,14 @@ lmsensor_psensor_create(const sensors_chip_name *chip,
 
        psensor = psensor_create(id, label, cname, type, values_max_length);
 
+       sf = sensors_get_subfeature(chip, feature, max_subfeature);
+       if (sf)
+               psensor->max = get_value(chip, sf);
+
+       sf = sensors_get_subfeature(chip, feature, min_subfeature);
+       if (sf)
+               psensor->min = get_value(chip, sf);
+
        lmsensor_data_set(psensor, chip, feature);
 
        if (feature->type == SENSORS_FEATURE_TEMP