X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fgraph.c;h=9f87eda76877947871b093410e75f25266a63dff;hb=9d77e6ab0ca102b9d42072df4fd9d2378897a5ca;hp=b2b17cb726c51a5a41b94ea390fbe6e46d35051e;hpb=e43318f964c86e7a749e5b6ffec4f1fde70603c7;p=psensor.git diff --git a/src/graph.c b/src/graph.c index b2b17cb..9f87eda 100644 --- a/src/graph.c +++ b/src/graph.c @@ -27,13 +27,14 @@ #include #include +#include #include #include /* 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);