This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository enlightenment.

View the commit online.

commit 70b30d2c7c0934f9ba60f4e8cc56ff227dd0d7f9
Author: Carsten Haitzler <ras...@rasterman.com>
AuthorDate: Fri Jan 3 01:10:13 2025 +0000

    battery - polish it up a bit more
---
 src/modules/battery/e_mod_main.c |  3 ++-
 src/modules/battery/e_mod_udev.c | 54 ++++++++++++++++++++++++----------------
 2 files changed, 35 insertions(+), 22 deletions(-)

diff --git a/src/modules/battery/e_mod_main.c b/src/modules/battery/e_mod_main.c
index 9cb1b9105..a4b64bdbc 100644
--- a/src/modules/battery/e_mod_main.c
+++ b/src/modules/battery/e_mod_main.c
@@ -303,13 +303,14 @@ _battery_popup_usage_content_update_cb(void *data)
 
         elm_progressbar_value_set(w->pb_usage, (double) bat->percent / 10000.0);
 
-        t = bat->time_left;
         if ((battery_config->have_power) && (battery_config->full < 10000))
           {
+             t = bat->time_full;
              elm_object_text_set(w->state, _("Charging"));
           }
         else if ((!battery_config->have_power) && (battery_config->full < 10000))
           {
+             t = bat->time_left;
              elm_object_text_set(w->state, _("Discharging"));
           }
         else
diff --git a/src/modules/battery/e_mod_udev.c b/src/modules/battery/e_mod_udev.c
index fbfa6b3e1..cf6668607 100644
--- a/src/modules/battery/e_mod_udev.c
+++ b/src/modules/battery/e_mod_udev.c
@@ -252,8 +252,9 @@ _battery_udev_battery_update_poll(void *data)
 static void
 _battery_udev_battery_update(const char *syspath, Battery *bat)
 {
+   int pcharging;
    const char *test;
-   double t, charge;
+   double t, charge, voltage_now;
 
    if (!bat)
      {
@@ -281,6 +282,13 @@ _battery_udev_battery_update(const char *syspath, Battery *bat)
          }
      }
    bat->power_now = 0;
+   voltage_now = bat->design_voltage;
+   test = eeze_udev_syspath_get_property(bat->udi, "POWER_SUPPLY_VOLTAGE_NOW");
+   if (test)
+     {
+        voltage_now = (double)strtod(test, NULL);
+        eina_stringshare_del(test);
+     }
    GET_NUM(bat, power_now, POWER_SUPPLY_POWER_NOW);
    if (eina_dbl_exact(bat->power_now, 0))
      {
@@ -289,10 +297,9 @@ _battery_udev_battery_update(const char *syspath, Battery *bat)
          {
            double current_now = strtod(test, NULL);
 
-           test = eeze_udev_syspath_get_property(bat->udi, "POWER_SUPPLY_VOLTAGE_NOW");
-           if (test)
+           eina_stringshare_del(test);
+           if (voltage_now > 0.0)
              {
-               double voltage_now = strtod(test, NULL);
                bat->power_now = current_now * voltage_now / 1000000.0;
              }
          }
@@ -309,6 +316,20 @@ _battery_udev_battery_update(const char *syspath, Battery *bat)
      }
    else
      bat->is_micro_watts = EINA_TRUE;
+   pcharging = bat->charging;
+   test = eeze_udev_syspath_get_property(bat->udi, "POWER_SUPPLY_STATUS");
+   if (test)
+     {
+        if (!strcmp(test, "Charging"))
+          bat->charging = 1;
+        else if ((!strcmp(test, "Unknown")) && (bat->charge_rate > 0))
+          bat->charging = 1;
+        else
+          bat->charging = 0;
+        eina_stringshare_del(test);
+     }
+   else
+     bat->charging = 0;
    test = eeze_udev_syspath_get_property(bat->udi, "POWER_SUPPLY_ENERGY_NOW");
    if (!test)
      test = eeze_udev_syspath_get_property(bat->udi, "POWER_SUPPLY_CHARGE_NOW");
@@ -324,7 +345,9 @@ _battery_udev_battery_update(const char *syspath, Battery *bat)
    if (test)
      {
         double charge_rate = 0;
+        double last_charge_rate;
 
+        last_charge_rate = bat->charge_rate;
         charge = strtod(test, NULL);
         if (bat->design_voltage > 0.0)
            charge = charge * bat->design_voltage / 1000000.0;
@@ -346,22 +369,24 @@ _battery_udev_battery_update(const char *syspath, Battery *bat)
         bat->percent = (10000 * bat->current_charge) / bat->last_full_charge;
         if (bat->got_prop)
           {
+             if (pcharging == bat->charging) charge_rate = (charge_rate + last_charge_rate) / 2.0;
              if (bat->charge_rate > 0)
                {
                   if (battery_config->fuzzy && (++battery_config->fuzzcount <= 10) && (bat->time_full > 0))
-                    bat->time_full = (((bat->last_full_charge - bat->current_charge) / bat->charge_rate) + bat->time_full) / 2;
+                    bat->time_full = (((bat->last_full_charge - bat->current_charge) / charge_rate) + bat->time_full) / 2;
                   else
-                    bat->time_full = (bat->last_full_charge - bat->current_charge) / bat->charge_rate;
+                    bat->time_full = (bat->last_full_charge - bat->current_charge) / charge_rate;
                   bat->time_left = -1;
                }
              else
                {
                   if (battery_config->fuzzy && (battery_config->fuzzcount <= 10) && (bat->time_left > 0))
-                    bat->time_left = (((0 - bat->current_charge) / bat->charge_rate) + bat->time_left) / 2;
+                    bat->time_left = (((0 - bat->current_charge) / charge_rate) + bat->time_left) / 2;
                   else
-                    bat->time_left = (0 - bat->current_charge) / bat->charge_rate;
+                    bat->time_left = (0 - bat->current_charge) / charge_rate;
                   bat->time_full = -1;
                }
+            if (pcharging == bat->charging) bat->charge_rate = charge_rate;
           }
         else
           {
@@ -370,19 +395,6 @@ _battery_udev_battery_update(const char *syspath, Battery *bat)
           }
      }
    if (battery_config->fuzzcount > 10) battery_config->fuzzcount = 0;
-   test = eeze_udev_syspath_get_property(bat->udi, "POWER_SUPPLY_STATUS");
-   if (test)
-     {
-        if (!strcmp(test, "Charging"))
-          bat->charging = 1;
-        else if ((!strcmp(test, "Unknown")) && (bat->charge_rate > 0))
-          bat->charging = 1;
-        else
-          bat->charging = 0;
-        eina_stringshare_del(test);
-     }
-   else
-     bat->charging = 0;
    if (bat->got_prop)
      _battery_device_update();
    bat->got_prop = 1;

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to