avoid to computer the max temperature if the launcher counter is not enabled.
[psensor.git] / src / ui_unity.c
index 046fa6c..2b949c8 100644 (file)
  */
 #include <unity.h>
 
+#include <cfg.h>
+#include <temperature.h>
 #include <ui_unity.h>
 
 static int initialized;
 static UnityLauncherEntry *psensor_entry;
 static unsigned int last_visible = -1;
 
+static double get_max_current_value(struct psensor **sensors, unsigned int type)
+{
+       double m, v;
+       struct psensor *s;
+
+       m = UNKNOWN_DBL_VALUE;
+       while (*sensors) {
+               s = *sensors;
+
+               if ((s->type & type) && config_is_sensor_graph_enabled(s->id)) {
+                       v = psensor_get_current_value(s);
+
+                       if (m == UNKNOWN_DBL_VALUE || v > m)
+                               m = v;
+               }
+
+               sensors++;
+       }
+
+       return m;
+}
+
 void ui_unity_launcher_entry_update(struct psensor **sensors,
                                    unsigned int show,
-                                   int use_celcius)
+                                   int use_celsius)
 {
        double v;
 
        if (!initialized) {
                psensor_entry = unity_launcher_entry_get_for_desktop_file
-                       ("psensor.desktop");
+                       (PSENSOR_DESKTOP_FILE);
 
                unity_launcher_entry_set_count(psensor_entry, 0);
                initialized = 1;
@@ -48,12 +72,14 @@ void ui_unity_launcher_entry_update(struct psensor **sensors,
                last_visible = show;
        }
 
-       if (sensors && *sensors) {
-               v = psensor_get_max_current_value(sensors, SENSOR_TYPE_TEMP);
+       if (show && sensors && *sensors) {
+               v = get_max_current_value(sensors, SENSOR_TYPE_TEMP);
 
-               if (!use_celcius)
-                       v = celcius_to_fahrenheit(v);
+               if (v != UNKNOWN_DBL_VALUE) {
+                       if (!use_celsius)
+                               v = celsius_to_fahrenheit(v);
 
-               unity_launcher_entry_set_count(psensor_entry, v);
+                       unity_launcher_entry_set_count(psensor_entry, v);
+               }
        }
 }