batt: don't fail if there is no battery
authorHenry Gebhardt <hsggebhardt@gmail.com>
Mon, 27 Jan 2014 01:58:30 +0000 (20:58 -0500)
committerHenry Gebhardt <hsggebhardt@gmail.com>
Mon, 27 Jan 2014 01:58:30 +0000 (20:58 -0500)
fixes ID - 3614989 - Battery display doesn't show up

src/plugins/batt/batt.c
src/plugins/batt/batt_sys.c
src/plugins/batt/batt_sys.h

index bb8519f..788dd61 100644 (file)
@@ -138,6 +138,9 @@ static gchar* make_tooltip(lx_battery* lx_b, gboolean isCharging)
     gchar * indent = "  ";
     battery *b = lx_b->b;
 
+    if (b == NULL)
+       return NULL;
+
     if (isCharging) {
        int hours = lx_b->b->seconds / 3600;
        int left_seconds = lx_b->b->seconds - 3600 * hours;
@@ -195,6 +198,8 @@ static gchar* make_tooltip(lx_battery* lx_b, gboolean isCharging)
 
 static void set_tooltip_text(lx_battery* lx_b)
 {
+    if (lx_b->b == NULL)
+       return;
     gboolean isCharging = battery_is_charging(lx_b->b);
     gchar *tooltip = make_tooltip(lx_b, isCharging);
     gtk_widget_set_tooltip_text(lx_b->drawingArea, tooltip);
@@ -310,7 +315,8 @@ static int update_timout(lx_battery *lx_b) {
     lx_b->info_elapsed_time++;
 
     /* check the  batteries every 3 seconds */
-    battery_update( lx_b->b );
+    if (lx_b->b != NULL)
+       battery_update( lx_b->b );
 
     update_display( lx_b, TRUE );
 
@@ -397,10 +403,6 @@ constructor(Plugin *p, char **fp)
     /* get available battery */
     lx_b->b = battery_get ();
     
-    /* no battery available */
-    if ( lx_b->b == NULL )
-       goto error;
-    
     p->pwid = gtk_event_box_new();
     GTK_WIDGET_SET_FLAGS( p->pwid, GTK_NO_WINDOW );
     gtk_container_set_border_width( GTK_CONTAINER(p->pwid), 1 );
@@ -536,6 +538,9 @@ destructor(Plugin *p)
 
     lx_battery *b = (lx_battery *) p->priv;
 
+    if (b->b != NULL)
+       battery_free(b->b);
+
     if (b->pixmap)
         cairo_surface_destroy(b->pixmap);
 
index 3ce0433..5d62edc 100644 (file)
@@ -285,6 +285,12 @@ battery *battery_get() {
     return b;
 }
 
+void battery_free(battery* bat)
+{
+    g_free(bat->path);
+    g_free(bat);
+}
+
 gboolean battery_is_charging( battery *b )
 {
     if (!b->state)
@@ -300,3 +306,4 @@ gint battery_get_remaining( battery *b )
 }
 
 
+/* vim: set sw=4 et sts=4 : */
index 6b31793..c2d72c3 100644 (file)
@@ -35,7 +35,7 @@
 typedef struct battery {
     int battery_num;
     /* path to battery dir */
-    const gchar *path;                 
+    gchar *path;
     /* sysfs file contents */
     int charge_now;
     int energy_now;