summaryrefslogtreecommitdiffstats
path: root/healthd
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 /healthd
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
Diffstat (limited to 'healthd')
-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++;
}
}