sensors: find issue with combo

This commit is contained in:
Alastair Poole 2020-12-23 11:54:07 +00:00
parent 10bf9e1197
commit 0b45319b8f
3 changed files with 36 additions and 42 deletions

View File

@ -49,7 +49,7 @@ typedef struct
#if defined(__linux__)
char *path;
#elif defined(__OpenBSD__)
int mibs[5];
int mibs[5];
#endif
double value;
bool invalid;
@ -142,12 +142,15 @@ system_memory_usage_get(meminfo_t *memory);
sensor_t **
system_sensors_thermal_get(int *count);
int
system_sensor_thermal_get(sensor_t *snsr);
void
system_sensors_thermal_free(sensor_t **sensors, int count);
int
system_sensor_thermal_get(sensor_t *sensor);
void
system_sensor_thermal_free(sensor_t *sensor);
void
system_power_state_get(power_t *power);

View File

@ -14,21 +14,27 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void
system_sensor_thermal_free(sensor_t *sensor)
{
if (sensor->name)
free(sensor->name);
if (sensor->child_name)
free(sensor->child_name);
#if defined(__linux__)
if (sensor->path)
free(sensor->path);
#endif
free(sensor);
}
void
system_sensors_thermal_free(sensor_t **sensors, int count)
{
for (int i = 0; i < count; i++)
{
sensor_t *snsr = sensors[i];
if (snsr->name)
free(snsr->name);
if (snsr->child_name)
free(snsr->child_name);
#if defined(__linux__)
if (snsr->path)
free(snsr->path);
#endif
free(snsr);
sensor_t *sensor = sensors[i];
system_sensor_thermal_free(sensor);
}
if (sensors)
free(sensors);
@ -492,7 +498,6 @@ system_power_state_free(power_t *power)
{
for (int i = 0; i < power->battery_count; i++)
{
if (power->batteries[i]->name)
free(power->batteries[i]->name);
#if defined(__OpenBSD__)

View File

@ -83,7 +83,7 @@ _sensors_update(void *data, Ecore_Thread *thread)
while (!ecore_thread_check(thread))
{
if (pd->selected_it)
if (pd->sensor)
{
if (!system_sensor_thermal_get(pd->sensor))
msg->thermal_valid = 0;
@ -93,9 +93,11 @@ _sensors_update(void *data, Ecore_Thread *thread)
msg->thermal_temp = pd->sensor->value;
}
}
system_power_state_get(&msg->power);
ecore_thread_feedback(thread, msg);
if (ecore_thread_check(thread)) break;
usleep(1000000);
@ -112,21 +114,21 @@ _sensors_update_feedback_cb(void *data, Ecore_Thread *thread, void *msgdata)
Eina_List *l;
Data *msg = msgdata;
if (!eina_lock_take_try(&_lock)) return;
EINA_LIST_FREE(pd->sensors, s)
elm_genlist_item_append(pd->combobox, pd->itc, s,
NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
if (msg->thermal_valid)
elm_progressbar_value_set(pd->thermal_pb, msg->thermal_temp / 100);
l = eina_list_nth_list(pd->batteries, 0);
if (l)
{
if (msg->power.have_ac)
elm_object_text_set(pd->power_fr, _("Power (AC)"));
else
else
elm_object_text_set(pd->power_fr, _("Power"));
}
for (int i = 0; i < msg->power.battery_count; i++)
for (int i = 0; l && msg->power.battery_count; i++)
{
if (msg->power.batteries[i]->present)
{
@ -136,27 +138,16 @@ _sensors_update_feedback_cb(void *data, Ecore_Thread *thread, void *msgdata)
}
l = eina_list_next(l);
}
if (msg->thermal_valid)
elm_progressbar_value_set(pd->thermal_pb, msg->thermal_temp / 100);
system_power_state_free(&msg->power);
eina_lock_release(&_lock);
}
static void
_item_del(void *data, Evas_Object *obj)
{
sensor_t *s = data;
if (s->name)
free(s->name);
if (s->child_name)
free(s->child_name);
#if defined(__linux__)
if (s->path)
free(s->path);
#endif
free(s);
system_sensor_thermal_free(s);
}
static void
@ -175,7 +166,7 @@ _combo_expanded_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
}
static void
_combo_item_pressed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
_combo_item_pressed_cb(void *data, Evas_Object *obj, void *event_info)
{
Ui_Data *pd;
Elm_Object_Item *it;
@ -193,7 +184,7 @@ _combo_item_pressed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_inf
}
static Evas_Object *
_content_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
_content_get(void *data, Evas_Object *obj, const char *part)
{
Evas_Object *bx, *lb;
sensor_t *s;
@ -209,8 +200,8 @@ _content_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNU
evas_object_show(bx);
lb = elm_label_add(obj);
evas_object_size_hint_weight_set(lb, FILL, FILL);
evas_object_size_hint_align_set(lb, 0.0, EXPAND);
evas_object_size_hint_weight_set(lb, EXPAND, EXPAND);
evas_object_size_hint_align_set(lb, 0.0, FILL);
_name_set(buf, sizeof(buf), s);
elm_object_text_set(lb, buf);
evas_object_show(lb);
@ -228,7 +219,6 @@ _win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
Ui_Data *pd = data;
Ui *ui = pd->ui;
eina_lock_take(&_lock);
ecore_thread_cancel(ui->sensors.thread);
ecore_thread_wait(ui->sensors.thread, 0.5);
ui->sensors.thread = NULL;
@ -241,8 +231,6 @@ _win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
elm_genlist_item_class_free(pd->itc);
free(pd);
eina_lock_release(&_lock);
eina_lock_free(&_lock);
}
static void
@ -272,8 +260,6 @@ ui_win_sensors_add(Ui *ui)
if (!pd) return;
pd->ui = ui;
eina_lock_new(&_lock);
ui->sensors.win = win = elm_win_util_standard_add("evisum", _("Sensors"));
elm_win_autodel_set(win, EINA_TRUE);
evas_object_size_hint_weight_set(win, EXPAND, EXPAND);