Hi,

this patch fixes problems with powersave -s and also with dbus methode 
BatteryState if no battery is in the system available. Currently the methode 
return BAT_NORM_STATE (which result in powersave -s == NORMAL) but it should 
be BAT_NONE_STATE.

Please review.

Cheers,

Danny

 daemon/battery.cpp |    2 +-
 libpower/battery.c |   40 ++++++++++++++++++++++------------------
 2 files changed, 23 insertions(+), 19 deletions(-)
Index: daemon/battery.cpp
===================================================================
--- daemon/battery.cpp	(Revision 1950)
+++ daemon/battery.cpp	(Arbeitskopie)
@@ -48,7 +48,7 @@
 
 	_msecs_last_battery_read = 0;
 
-	if (getBatteriesInfo(&_bg) < 0) {
+	if (getBatteriesInfo(&_bg) <= 0) {
 		pDebug(DBG_INFO, "Could not get battery info");
 		// cannot read out battery, no cpufreq, stop polling
 		// suppors AC online and set battery state to normal
Index: libpower/battery.c
===================================================================
--- libpower/battery.c	(Revision 1950)
+++ libpower/battery.c	(Arbeitskopie)
@@ -104,27 +104,31 @@
 			continue;
 		}
 
-		/* calculate the charging rate for the multiple battery case */
-		if (bg.remaining_minutes > 0 && bd.remaining_capacity != UNKNOWN) {
-			int to_go = 0;
-			if (bg.charging_state & CHARG_STATE_CHARGING) {
-				if (bd.last_full_capacity != UNKNOWN)
-					to_go = bd.last_full_capacity - bd.remaining_capacity;
-			} else {
-				to_go = bd.remaining_capacity;
+		if( bd.present == PRESENT_NO) {
+			valid_batteries--;	
+		} else {
+			/* calculate the charging rate for the multiple battery case */
+			if (bg.remaining_minutes > 0 && bd.remaining_capacity != UNKNOWN) {
+				int to_go = 0;
+				if (bg.charging_state & CHARG_STATE_CHARGING) {
+					if (bd.last_full_capacity != UNKNOWN)
+						to_go = bd.last_full_capacity - bd.remaining_capacity;
+				} else {
+					to_go = bd.remaining_capacity;
+				}
+				rate += (to_go / bg.remaining_minutes);
 			}
-			rate += (to_go / bg.remaining_minutes);
-		}
 
-		/* FIXME: can we have one battery with valid last_full and a
-			  second battery with last_full == UNKNOWN?
-			  This would make those values totally bogus. */
-		if (bd.last_full_capacity != UNKNOWN) {
-			last_full_capacity_sum += bd.last_full_capacity;
+			/* FIXME: can we have one battery with valid last_full and a
+				  second battery with last_full == UNKNOWN?
+				  This would make those values totally bogus. */
+			if (bd.last_full_capacity != UNKNOWN) {
+				last_full_capacity_sum += bd.last_full_capacity;
 
-			/* see the FIXME above, same applies here... */
-			if (bd.remaining_capacity != UNKNOWN) {
-				remaining_capacity_sum += bd.remaining_capacity;
+				/* see the FIXME above, same applies here... */
+				if (bd.remaining_capacity != UNKNOWN) {
+					remaining_capacity_sum += bd.remaining_capacity;
+				}
 			}
 		}
 	}
_______________________________________________
powersave-devel mailing list
[email protected]
http://forge.novell.com/mailman/listinfo/powersave-devel

Reply via email to