avoid configuration data in psensor struct
[psensor.git] / src / graph.c
index b2b17cb..9f87eda 100644 (file)
 #include <math.h>
 
 #include <cfg.h>
+#include <graph.h>
 #include <plog.h>
 #include <psensor.h>
 
 /* horizontal padding */
-const int GRAPH_H_PADDING = 4;
+static const int GRAPH_H_PADDING = 4;
 /* vertical padding */
-const int GRAPH_V_PADDING = 4;
+static const int GRAPH_V_PADDING = 4;
 
 bool is_smooth_curves_enabled;
 
@@ -59,8 +60,33 @@ struct graph_info {
        GdkRGBA theme_fg_color;
 };
 
+static struct psensor **list_filter_graph_enabled(struct psensor **sensors)
+{
+       int n, i;
+       struct psensor **result, **cur, *s;
+
+       if (!sensors)
+               return NULL;
+
+       n = psensor_list_size(sensors);
+       result = malloc((n+1) * sizeof(struct psensor *));
+
+       for (cur = sensors, i = 0; *cur; cur++) {
+               s = *cur;
+
+               if (config_is_sensor_graph_enabled(s->id))
+                       result[i++] = s;
+       }
+
+       result[i] = NULL;
+
+       return result;
+}
+
 /* Return the end time of the graph i.e. the more recent measure.  If
  * no measure are available, return 0.
+ * If Bezier curves are used return the measure n-3 to avoid to
+ * display a part of the curve outside the graph area.
  */
 static time_t get_graph_end_time_s(struct psensor **sensors)
 {
@@ -84,8 +110,10 @@ static time_t get_graph_end_time_s(struct psensor **sensors)
                                if (!n) {
                                        t = measures[i].time.tv_sec;
 
-                                       if (t > ret)
+                                       if (t > ret) {
                                                ret = t;
+                                               break;
+                                       }
                                } else {
                                        n--;
                                }
@@ -248,7 +276,7 @@ static void draw_background_lines(cairo_t *cr,
        cairo_stroke(cr);
 
        /* back to normal line style */
-       cairo_set_dash(cr, 0, 0, 0);
+       cairo_set_dash(cr, NULL, 0, 0);
 }
 
 /* Keys: sensor identifier.
@@ -444,7 +472,7 @@ graph_update(struct psensor **sensors,
        if (!gtk_widget_is_drawable(w_graph))
                return;
 
-       enabled_sensors = psensor_list_filter_graph_enabled(sensors);
+       enabled_sensors = list_filter_graph_enabled(sensors);
 
        min_rpm = get_min_rpm(enabled_sensors);
        max_rpm = get_max_rpm(enabled_sensors);