From: Jean-Philippe Orsini Date: Mon, 13 May 2013 06:51:20 +0000 (+0000) Subject: get_min|max functions not limited on graph_enabled sensors X-Git-Tag: v0.8.0.5~67 X-Git-Url: http://git.wpitchoune.net/gitweb/?p=psensor.git;a=commitdiff_plain;h=ec65d9b7efd82760ea3c57b84afd0c5842899003 get_min|max functions not limited on graph_enabled sensors --- diff --git a/src/graph.c b/src/graph.c index 3b4eb05..f12a155 100644 --- a/src/graph.c +++ b/src/graph.c @@ -250,7 +250,7 @@ graph_update(struct psensor **sensors, cairo_t *cr, *cr_pixmap; char *str_btime, *str_etime; cairo_text_extents_t te_btime, te_etime, te_max, te_min; - struct psensor **sensor_cur; + struct psensor **sensor_cur, **enabled_sensors; GtkAllocation galloc; GtkStyleContext *style_ctx; GdkRGBA rgba; @@ -258,15 +258,17 @@ graph_update(struct psensor **sensors, if (!gtk_widget_is_drawable(w_graph)) return ; - min_rpm = get_min_rpm(sensors); - max_rpm = get_max_rpm(sensors); + enabled_sensors = psensor_list_filter_graph_enabled(sensors); - mint = get_min_temp(sensors); + min_rpm = get_min_rpm(enabled_sensors); + max_rpm = get_max_rpm(enabled_sensors); + + mint = get_min_temp(enabled_sensors); strmin = psensor_value_to_str(SENSOR_TYPE_TEMP, mint, config->temperature_unit == CELCIUS); - maxt = get_max_temp(sensors); + maxt = get_max_temp(enabled_sensors); strmax = psensor_value_to_str(SENSOR_TYPE_TEMP, maxt, config->temperature_unit == CELCIUS); @@ -350,7 +352,7 @@ graph_update(struct psensor **sensors, et = get_graph_end_time_s(); if (bt && et) { - sensor_cur = sensors; + sensor_cur = enabled_sensors; cairo_set_line_join(cr, CAIRO_LINE_JOIN_ROUND); cairo_set_line_width(cr, 1); @@ -358,28 +360,25 @@ graph_update(struct psensor **sensors, while (*sensor_cur) { struct psensor *s = *sensor_cur; - if (s->graph_enabled) { - no_graphs = 0; - if (is_fan_type(s->type)) { - min = min_rpm; - max = max_rpm; - } else if (s->type & SENSOR_TYPE_CPU_USAGE) { - min = 0; - max = get_max_value - (sensors, - SENSOR_TYPE_CPU_USAGE); - } else { - min = mint; - max = maxt; - } - - draw_sensor_curve(s, cr, - min, max, - bt, et, - g_width, g_height, - g_xoff, g_yoff); + no_graphs = 0; + if (is_fan_type(s->type)) { + min = min_rpm; + max = max_rpm; + } else if (s->type & SENSOR_TYPE_CPU_USAGE) { + min = 0; + max = get_max_value(enabled_sensors, + SENSOR_TYPE_CPU_USAGE); + } else { + min = mint; + max = maxt; } + draw_sensor_curve(s, cr, + min, max, + bt, et, + g_width, g_height, + g_xoff, g_yoff); + sensor_cur++; } @@ -400,6 +399,8 @@ graph_update(struct psensor **sensors, cairo_paint(cr_pixmap); } + free(enabled_sensors); + cairo_destroy(cr_pixmap); cairo_surface_destroy(cst); cairo_destroy(cr); diff --git a/src/lib/psensor.c b/src/lib/psensor.c index 05fe03e..e11d75d 100644 --- a/src/lib/psensor.c +++ b/src/lib/psensor.c @@ -307,7 +307,7 @@ static double get_min_value(struct psensor **sensors, int type) while (*s) { struct psensor *sensor = *s; - if (sensor->graph_enabled && (sensor->type & type)) { + if (sensor->type & type) { int i; double t; @@ -339,7 +339,7 @@ double get_max_value(struct psensor **sensors, int type) while (*s) { struct psensor *sensor = *s; - if (sensor->graph_enabled && (sensor->type & type)) { + if (sensor->type & type) { int i; double t; for (i = 0; i < sensor->values_max_length; i++) { @@ -546,3 +546,26 @@ psensor_current_value_to_str(const struct psensor *s, unsigned int celcius) psensor_get_current_value(s), celcius); } + +struct psensor **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 (s->graph_enabled) + result[i++] = s; + } + + result[i] = NULL; + + return result; +} diff --git a/src/lib/psensor.h b/src/lib/psensor.h index fafcf3b..e459866 100644 --- a/src/lib/psensor.h +++ b/src/lib/psensor.h @@ -136,6 +136,8 @@ void psensor_free(struct psensor *sensor); void psensor_list_free(struct psensor **sensors); int psensor_list_size(struct psensor **sensors); +struct psensor **psensor_list_filter_graph_enabled(struct psensor **); + struct psensor *psensor_list_get_by_id(struct psensor **sensors, const char *id);