netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=0b45319b8f2e876c3d2f5433e5ba0779ee2edf86

commit 0b45319b8f2e876c3d2f5433e5ba0779ee2edf86
Author: Alastair Poole <nets...@gmail.com>
Date:   Wed Dec 23 11:54:07 2020 +0000

    sensors: find issue with combo
---
 src/bin/system/machine.h             |  9 +++++---
 src/bin/system/machine/sensors.bogox | 27 ++++++++++++++----------
 src/bin/ui/ui_sensors.c              | 40 ++++++++++++------------------------
 3 files changed, 35 insertions(+), 41 deletions(-)

diff --git a/src/bin/system/machine.h b/src/bin/system/machine.h
index 89ddf4a..5387057 100644
--- a/src/bin/system/machine.h
+++ b/src/bin/system/machine.h
@@ -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,11 +142,14 @@ system_memory_usage_get(meminfo_t *memory);
 sensor_t **
 system_sensors_thermal_get(int *count);
 
+void
+system_sensors_thermal_free(sensor_t **sensors, int count);
+
 int
-system_sensor_thermal_get(sensor_t *snsr);
+system_sensor_thermal_get(sensor_t *sensor);
 
 void
-system_sensors_thermal_free(sensor_t **sensors, int count);
+system_sensor_thermal_free(sensor_t *sensor);
 
 void
 system_power_state_get(power_t *power);
diff --git a/src/bin/system/machine/sensors.bogox 
b/src/bin/system/machine/sensors.bogox
index 2a7b88f..fb8ee9d 100644
--- a/src/bin/system/machine/sensors.bogox
+++ b/src/bin/system/machine/sensors.bogox
@@ -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__)
diff --git a/src/bin/ui/ui_sensors.c b/src/bin/ui/ui_sensors.c
index 4d59b1f..2b051aa 100644
--- a/src/bin/ui/ui_sensors.c
+++ b/src/bin/ui/ui_sensors.c
@@ -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);

-- 


Reply via email to