summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRuchi Kandoi <kandoiruchi@google.com>2014-06-23 11:13:15 -0700
committerRuchi Kandoi <kandoiruchi@google.com>2014-06-23 11:16:36 -0700
commit9015eaa30fec3b5763e49124d7aa822862261842 (patch)
tree5c8685d6279e188fadca35cce24b7bdb9c688887
parent25af09e16d463b33a0b6f1b5f28bdc56be895749 (diff)
downloadsystem_core-9015eaa30fec3b5763e49124d7aa822862261842.zip
system_core-9015eaa30fec3b5763e49124d7aa822862261842.tar.gz
system_core-9015eaa30fec3b5763e49124d7aa822862261842.tar.bz2
healthd: Avoid animation while not charging.
At present, charging animation runs irrespective of whether charger is connected or not. When the charger is disconnected, device does not shutdown for 10sec. Charger animation during this period should be avoided. Change-Id: I34dc5028522ca199d50a1a1b684b035b2d81ef68
-rw-r--r--healthd/healthd_mode_charger.cpp35
1 files changed, 22 insertions, 13 deletions
diff --git a/healthd/healthd_mode_charger.cpp b/healthd/healthd_mode_charger.cpp
index cfac312..86610b2 100644
--- a/healthd/healthd_mode_charger.cpp
+++ b/healthd/healthd_mode_charger.cpp
@@ -409,24 +409,33 @@ static void update_screen_state(struct charger *charger, int64_t now)
/* schedule next screen transition */
charger->next_screen_transition = now + disp_time;
- /* advance frame cntr to the next valid frame
+ /* advance frame cntr to the next valid frame only if we are charging
* if necessary, advance cycle cntr, and reset frame cntr
*/
- batt_anim->cur_frame++;
-
- /* if the frame is used for level-only, that is only show it when it's
- * the current level, skip it during the animation.
- */
- while (batt_anim->cur_frame < batt_anim->num_frames &&
- batt_anim->frames[batt_anim->cur_frame].level_only)
+ if (charger->charger_connected) {
batt_anim->cur_frame++;
- if (batt_anim->cur_frame >= batt_anim->num_frames) {
- batt_anim->cur_cycle++;
- batt_anim->cur_frame = 0;
- /* don't reset the cycle counter, since we use that as a signal
- * in a test above to check if animation is over
+ /* if the frame is used for level-only, that is only show it when it's
+ * the current level, skip it during the animation.
*/
+ while (batt_anim->cur_frame < batt_anim->num_frames &&
+ batt_anim->frames[batt_anim->cur_frame].level_only)
+ batt_anim->cur_frame++;
+ if (batt_anim->cur_frame >= batt_anim->num_frames) {
+ batt_anim->cur_cycle++;
+ batt_anim->cur_frame = 0;
+
+ /* don't reset the cycle counter, since we use that as a signal
+ * in a test above to check if animation is over
+ */
+ }
+ } else {
+ /* Stop animating if we're not charging.
+ * If we stop it immediately instead of going through this loop, then
+ * the animation would stop somewhere in the middle.
+ */
+ batt_anim->cur_frame = 0;
+ batt_anim->cur_cycle++;
}
}