X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fpsensor.c;h=cd7fcf622c349ba4eb72e9dcb49b004922c44bca;hb=2291a5e288aab0c29e2886ae2e60aa254d698e0e;hp=b589c035ebf86c2935aa497db45a33c32a2bd544;hpb=8a3d16ade26321374c684080d627cf12ba71e598;p=psensor.git diff --git a/src/lib/psensor.c b/src/lib/psensor.c index b589c03..cd7fcf6 100644 --- a/src/lib/psensor.c +++ b/src/lib/psensor.c @@ -25,14 +25,8 @@ #include #include -#include #include -#ifdef HAVE_GTOP -#include -#include -#endif - struct psensor *psensor_create(char *id, char *name, char *chip, @@ -69,6 +63,9 @@ struct psensor *psensor_create(char *id, psensor->graph_enabled = 1; psensor->appindicator_enabled = 0; + psensor->provider_data = NULL; + psensor->provider_data_free_fct = &free; + return psensor; } @@ -95,26 +92,30 @@ void psensor_values_resize(struct psensor *s, int new_size) s->measures = new_ms; } -void psensor_free(struct psensor *sensor) +void psensor_free(struct psensor *s) { - if (sensor) { - log_debug("Cleanup %s", sensor->id); + if (!s) + return; - free(sensor->name); - free(sensor->id); + log_debug("Cleanup %s", s->id); - if (sensor->chip) - free(sensor->chip); + free(s->name); + free(s->id); - if (sensor->color) - free(sensor->color); + if (s->chip) + free(s->chip); - measures_free(sensor->measures); + if (s->color) + free(s->color); - free(sensor->url); + measures_free(s->measures); - free(sensor); - } + free(s->url); + + if (s->provider_data && s->provider_data_free_fct) + s->provider_data_free_fct(s->provider_data); + + free(s); } void psensor_list_free(struct psensor **sensors) @@ -413,7 +414,7 @@ struct psensor **get_all_sensors(int use_libatasmart, int values_max_length) struct psensor **psensors; struct psensor **tmp_psensors; - psensors = lmsensor_psensor_list_add(NULL, values_max_length); + psensors = NULL; if (!use_libatasmart) { tmp_psensors = hddtemp_psensor_list_add(psensors, @@ -434,10 +435,6 @@ struct psensor **get_all_sensors(int use_libatasmart, int values_max_length) } #endif -#ifdef HAVE_GTOP - mem_psensor_list_add(&psensors, values_max_length); -#endif - if (!psensors) { /* there is no detected sensors */ psensors = malloc(sizeof(struct psensor *)); *psensors = NULL; @@ -513,13 +510,6 @@ const char *psensor_type_to_unit_str(unsigned int type, int use_celsius) void psensor_list_update_measures(struct psensor **sensors) { - lmsensor_psensor_list_update(sensors); - -#ifdef HAVE_GTOP - cpu_psensor_list_update(sensors); - mem_psensor_list_update(sensors); -#endif - if (psensor_list_contains_type(sensors, SENSOR_TYPE_HDDTEMP)) hddtemp_psensor_list_update(sensors); @@ -543,12 +533,10 @@ void psensor_log_measures(struct psensor **sensors) void psensor_init() { - lmsensor_init(); } void psensor_cleanup() { - lmsensor_cleanup(); } struct psensor **psensor_list_copy(struct psensor **sensors)