diff options
| author | Ruchi Kandoi <kandoiruchi@google.com> | 2014-06-23 11:13:15 -0700 |
|---|---|---|
| committer | Ruchi Kandoi <kandoiruchi@google.com> | 2014-06-23 11:16:36 -0700 |
| commit | 9015eaa30fec3b5763e49124d7aa822862261842 (patch) | |
| tree | 5c8685d6279e188fadca35cce24b7bdb9c688887 | |
| parent | 25af09e16d463b33a0b6f1b5f28bdc56be895749 (diff) | |
| download | system_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.cpp | 35 |
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++; } } |
