BSD: Fix for unusual setup.

Thanks Peter2121 (Quelrond)
This commit is contained in:
Alastair Poole 2020-04-28 13:39:05 +01:00
parent 95359855da
commit ba22c1c4fd
3 changed files with 10 additions and 2 deletions

View File

@ -836,6 +836,7 @@ _power_battery_count_get(power_t *power)
for (int i = 0; i < power->battery_count; i++) for (int i = 0; i < power->battery_count; i++)
{ {
power->batteries[i] = calloc(1, sizeof(bat_t)); power->batteries[i] = calloc(1, sizeof(bat_t));
power->batteries[i]->present = true;
} }
return power->battery_count; return power->battery_count;
@ -898,9 +899,8 @@ _battery_state_get(power_t *power)
battio.unit = i; battio.unit = i;
if (ioctl(fd, ACPIIO_BATT_GET_BIF, &battio) != -1) if (ioctl(fd, ACPIIO_BATT_GET_BIF, &battio) != -1)
{ {
power->batteries[i]->charge_full = battio.bif.lfcap; power->batteries[i]->charge_full = battio.bif.dcap;
} }
snprintf(name, sizeof(name), "%s %s", battio.bif.oeminfo, battio.bif.model); snprintf(name, sizeof(name), "%s %s", battio.bif.oeminfo, battio.bif.model);
power->battery_names[i] = strdup(name); power->battery_names[i] = strdup(name);
battio.unit = i; battio.unit = i;
@ -908,6 +908,10 @@ _battery_state_get(power_t *power)
{ {
power->batteries[i]->charge_current = battio.bst.cap; power->batteries[i]->charge_current = battio.bst.cap;
} }
if (battio.bst.state == ACPI_BATT_STAT_NOT_PRESENT)
{
power->batteries[i]->present = false;
}
} }
close(fd); close(fd);

View File

@ -29,6 +29,7 @@ typedef struct
double charge_full; double charge_full;
double charge_current; double charge_current;
uint8_t percent; uint8_t percent;
bool present;
} bat_t; } bat_t;
typedef struct typedef struct

View File

@ -164,6 +164,9 @@ _battery_usage_add(Evas_Object *box, power_t *power)
for (int i = 0; i < power->battery_count; i++) for (int i = 0; i < power->battery_count; i++)
{ {
if (!power->batteries[i]->present)
continue;
frame = elm_frame_add(box); frame = elm_frame_add(box);
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);