]> mj.ucw.cz Git - osdd.git/commitdiff
osd-batt: Warn on important status changes, too
authorMartin Mares <mj@ucw.cz>
Wed, 18 Aug 2010 23:42:35 +0000 (01:42 +0200)
committerMartin Mares <mj@ucw.cz>
Wed, 18 Aug 2010 23:42:35 +0000 (01:42 +0200)
This way, the user knows whenever he accidentally loses his AC power
or when the battery is full.

osd-batt.c

index 56bf5b916ed558164e3efd00548f14846552114a..ace3a87f79d6e3248f88f7a3d00c809bf6d7cbc2 100644 (file)
@@ -22,6 +22,9 @@ static int charge_time, discharge_time;
 static int ac_online;
 static unsigned int present_mask, charge_mask, discharge_mask;
 
+static unsigned int last_charge_mask, last_discharge_mask;
+static int last_ac_online = -1;
+
 static char *parse_line(char *line)
 {
   char *t = strchr(line, '\n');
@@ -204,8 +207,16 @@ static void show(void)
 
 static void show_if_warn(void)
 {
-  if (discharge_mask && discharge_time < warn_threshold)
+  if (discharge_mask && discharge_time < warn_threshold ||
+      last_ac_online >= 0 && (
+       charge_mask != last_charge_mask ||
+       discharge_mask != last_discharge_mask ||
+       ac_online != last_ac_online))
     show();
+
+  last_charge_mask = charge_mask;
+  last_discharge_mask = discharge_mask;
+  last_ac_online = ac_online;
 }
 
 static void NONRET