diff -Naur gnome-applets-2.2.0.orig/battstat/acpi-linux.c gnome-applets-2.2.0/battstat/acpi-linux.c --- gnome-applets-2.2.0.orig/battstat/acpi-linux.c 2003-05-02 09:20:11.000000000 -0700 +++ gnome-applets-2.2.0/battstat/acpi-linux.c 2003-05-02 12:27:40.000000000 -0700 @@ -30,7 +30,6 @@ #ifdef __linux__ #include -#include #include #include #include @@ -40,6 +39,7 @@ #include #include #include +#include "apmlib/apm.h" #include "acpi-linux.h" static GHashTable * @@ -184,21 +184,40 @@ } procdir=opendir("/proc/acpi/battery/"); + + /* See if we have read this once before */ + if (!apminfo->maximum_capacity) { + + /* We need to read all the battery information */ + while ((procdirentry=readdir(procdir))) + { + if (procdirentry->d_name[0]!='.') + { + strcpy(batt_info,"/proc/acpi/battery/"); + strcat(batt_info,procdirentry->d_name); + strcat(batt_info,"/info"); + hash = read_file (batt_info, buf, sizeof (buf)); + if (hash) + { + max_capacity += read_long (hash, "last full capacity"); + low_capacity += read_long (hash, "design capacity warning"); + critical_capacity += read_long (hash, "design capacity low"); + g_hash_table_destroy (hash); + } + } + } + + /* Store these for use later so we don't have to re-read every time */ + apminfo->maximum_capacity = max_capacity; + apminfo->low_capacity = low_capacity; + apminfo->critical_capacity; + } + + /* Now get the battery status */ while ((procdirentry=readdir(procdir))) { if (procdirentry->d_name[0]!='.') { - strcpy(batt_info,"/proc/acpi/battery/"); - strcat(batt_info,procdirentry->d_name); - strcat(batt_info,"/info"); - hash = read_file (batt_info, buf, sizeof (buf)); - if (hash) - { - max_capacity += read_long (hash, "last full capacity"); - low_capacity += read_long (hash, "design capacity warning"); - critical_capacity += read_long (hash, "design capacity low"); - g_hash_table_destroy (hash); - } strcpy(batt_state,"/proc/acpi/battery/"); strcat(batt_state,procdirentry->d_name); strcat(batt_state,"/state"); @@ -218,7 +237,7 @@ } closedir(procdir); - if (!max_capacity) + if (!apminfo->maximum_capacity) return FALSE; procdir=opendir("/proc/acpi/ac_adapter/"); @@ -243,8 +262,8 @@ closedir(procdir); apminfo->ac_line_status = ac_online ? 1 : 0; - apminfo->battery_status = remain < low_capacity ? 1 : remain < critical_capacity ? 2 : 0; - apminfo->battery_percentage = (int) (remain/(float)max_capacity*100); + apminfo->battery_status = remain < apminfo->low_capacity ? 1 : remain < apminfo->critical_capacity ? 2 : 0; + apminfo->battery_percentage = (int) (remain/(float)apminfo->maximum_capacity*100); apminfo->battery_flags = charging ? 0x8 : 0; return TRUE; diff -Naur gnome-applets-2.2.0.orig/battstat/apmlib/apm.h gnome-applets-2.2.0/battstat/apmlib/apm.h --- gnome-applets-2.2.0.orig/battstat/apmlib/apm.h 2003-05-02 09:20:11.000000000 -0700 +++ gnome-applets-2.2.0/battstat/apmlib/apm.h 2003-05-02 12:12:46.000000000 -0700 @@ -45,6 +45,9 @@ int battery_percentage; int battery_time; int using_minutes; + int maximum_capacity; + int low_capacity; + int critical_capacity; } apm_info; diff -Naur gnome-applets-2.2.0.orig/battstat/battstat_applet.c gnome-applets-2.2.0/battstat/battstat_applet.c --- gnome-applets-2.2.0.orig/battstat/battstat_applet.c 2003-05-02 09:20:11.000000000 -0700 +++ gnome-applets-2.2.0/battstat/battstat_applet.c 2003-05-02 12:47:36.000000000 -0700 @@ -36,7 +36,7 @@ #include #include #elif __linux__ -#include +#include "apmlib/apm.h" #endif #include @@ -1501,7 +1501,7 @@ pixmap_timeout(battstat); change_orient (applet, battstat->orienttype, battstat ); - battstat->pixtimer = gtk_timeout_add (1000, pixmap_timeout, battstat); + battstat->pixtimer = gtk_timeout_add (30000, pixmap_timeout, battstat); gtk_container_add (GTK_CONTAINER (battstat->applet), battstat->hbox1); diff -Naur gnome-applets-2.2.0.orig/battstat/Makefile.in gnome-applets-2.2.0/battstat/Makefile.in --- gnome-applets-2.2.0.orig/battstat/Makefile.in 2003-05-02 09:20:11.000000000 -0700 +++ gnome-applets-2.2.0/battstat/Makefile.in 2003-05-02 13:21:07.000000000 -0700 @@ -147,12 +147,9 @@ pixmapsdir = $(datadir)/pixmaps pixmaps_DATA = battstat.png -@HAVE_LIBAPM_TRUE@APMLIB = @HAVE_LIBAPM_TRUE@-lapm -@HAVE_LIBAPM_FALSE@APMLIB = @HAVE_LIBAPM_FALSE@apmlib/libapm.a -@HAVE_LIBAPM_TRUE@APMDIR = -@HAVE_LIBAPM_FALSE@APMDIR = @HAVE_LIBAPM_FALSE@apmlib -@HAVE_LIBAPM_TRUE@APMINC = -@HAVE_LIBAPM_FALSE@APMINC = @HAVE_LIBAPM_FALSE@-Iapmlib/ +APMLIB = apmlib/libapm.a +APMDIR = apmlib +APMINC = -Iapmlib/ SUBDIRS = docs sounds $(APMDIR) @@ -220,11 +217,9 @@ X_PRE_LIBS = @X_PRE_LIBS@ battstat_applet_2_OBJECTS = properties.$(OBJEXT) \ battstat_applet.$(OBJEXT) acpi-linux.$(OBJEXT) -@HAVE_LIBAPM_TRUE@battstat_applet_2_DEPENDENCIES = \ -@HAVE_LIBAPM_TRUE@$(top_builddir)/screen-exec/libscreen-exec.la -@HAVE_LIBAPM_FALSE@battstat_applet_2_DEPENDENCIES = \ -@HAVE_LIBAPM_FALSE@$(top_builddir)/screen-exec/libscreen-exec.la \ -@HAVE_LIBAPM_FALSE@apmlib/libapm.a +battstat_applet_2_DEPENDENCIES = \ +$(top_builddir)/screen-exec/libscreen-exec.la \ +apmlib/libapm.a battstat_applet_2_LDFLAGS = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) diff -Naur gnome-applets-2.2.0.orig/battstat/properties.c gnome-applets-2.2.0/battstat/properties.c --- gnome-applets-2.2.0.orig/battstat/properties.c 2003-05-02 09:20:11.000000000 -0700 +++ gnome-applets-2.2.0/battstat/properties.c 2003-05-02 12:13:49.000000000 -0700 @@ -36,7 +36,7 @@ #include #include #elif __linux__ -#include +#include "apmlib/apm.h" #endif #include