diff --git a/src/battery/battery.c b/src/battery/battery.c index 1b59db7..643033a 100644 --- a/src/battery/battery.c +++ b/src/battery/battery.c @@ -181,6 +181,12 @@ void cleanup_battery() battery_os_free(); } +void reinit_battery() +{ + battery_os_free(); + battery_found = battery_os_init(); + update_battery(); +} void init_battery() { if (!battery_enabled) diff --git a/src/battery/battery.h b/src/battery/battery.h index c39434e..740fa03 100644 --- a/src/battery/battery.h +++ b/src/battery/battery.h @@ -100,6 +100,7 @@ int update_battery(); void init_battery(); void init_battery_panel(void *panel); +void reinit_battery(); void draw_battery(void *obj, cairo_t *c); int resize_battery(void *obj); diff --git a/src/battery/linux.c b/src/battery/linux.c index fa9a707..fe96408 100644 --- a/src/battery/linux.c +++ b/src/battery/linux.c @@ -73,8 +73,7 @@ static struct uevent_notify psy_change = { static void uevent_battery_plug() { printf("reinitialize batteries after HW change\n"); - cleanup_battery(); - init_battery(); + reinit_battery(); } static struct uevent_notify psy_plug = { UEVENT_ADD | UEVENT_REMOVE,