diff options
author | Joe LaPenna <jlapenna@google.com> | 2015-04-03 21:03:33 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-04-03 21:03:33 +0000 |
commit | e59f426050f693b62bb5471fca5fb8b7ea2af8ea (patch) | |
tree | 51df15d81457cbb2e929b5a2f623bc540a16759d /policy | |
parent | dbb5f5d6c4186e919fa51c019d56ea5fa8ff8b96 (diff) | |
parent | 1f956e424320b22255f293e9b6d7d0b30b19a79f (diff) | |
download | frameworks_base-e59f426050f693b62bb5471fca5fb8b7ea2af8ea.zip frameworks_base-e59f426050f693b62bb5471fca5fb8b7ea2af8ea.tar.gz frameworks_base-e59f426050f693b62bb5471fca5fb8b7ea2af8ea.tar.bz2 |
am 1f956e42: Merge "Make burn in protection updates happen on the minute." into lmp-mr1-modular-dev
* commit '1f956e424320b22255f293e9b6d7d0b30b19a79f':
Make burn in protection updates happen on the minute.
Diffstat (limited to 'policy')
-rw-r--r-- | policy/src/com/android/internal/policy/impl/BurnInProtectionHelper.java | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/policy/src/com/android/internal/policy/impl/BurnInProtectionHelper.java b/policy/src/com/android/internal/policy/impl/BurnInProtectionHelper.java index 4ae9b46..11c739c 100644 --- a/policy/src/com/android/internal/policy/impl/BurnInProtectionHelper.java +++ b/policy/src/com/android/internal/policy/impl/BurnInProtectionHelper.java @@ -11,6 +11,7 @@ import android.content.IntentFilter; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManagerInternal; import android.os.SystemClock; +import android.util.Slog; import android.view.Display; import android.view.animation.LinearInterpolator; @@ -29,6 +30,8 @@ public class BurnInProtectionHelper implements DisplayManager.DisplayListener, private static final long BURNIN_PROTECTION_WAKEUP_INTERVAL_MS = TimeUnit.MINUTES.toMillis(1); private static final long BURNIN_PROTECTION_MINIMAL_INTERVAL_MS = TimeUnit.SECONDS.toMillis(10); + private static final boolean DEBUG = false; + private static final String ACTION_BURN_IN_PROTECTION = "android.internal.policy.action.BURN_IN_PROTECTION"; @@ -61,10 +64,13 @@ public class BurnInProtectionHelper implements DisplayManager.DisplayListener, private BroadcastReceiver mBurnInProtectionReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { + if (DEBUG) { + Slog.d(TAG, "onReceive " + intent); + } updateBurnInProtection(); } }; - + public BurnInProtectionHelper(Context context, int minHorizontalOffset, int maxHorizontalOffset, int minVerticalOffset, int maxVerticalOffset, int maxOffsetRadius) { @@ -120,12 +126,26 @@ public class BurnInProtectionHelper implements DisplayManager.DisplayListener, mDisplayManagerInternal.setDisplayOffsets(mDisplay.getDisplayId(), mLastBurnInXOffset, mLastBurnInYOffset); } + // We use currentTimeMillis to compute the next wakeup time since we want to wake up at + // the same time as we wake up to update ambient mode to minimize power consumption. + // However, we use elapsedRealtime to schedule the alarm so that setting the time can't + // disable burn-in protection for extended periods. + final long nowWall = System.currentTimeMillis(); + final long nowElapsed = SystemClock.elapsedRealtime(); // Next adjustment at least ten seconds in the future. - long next = SystemClock.elapsedRealtime() + BURNIN_PROTECTION_MINIMAL_INTERVAL_MS; + long nextWall = nowWall + BURNIN_PROTECTION_MINIMAL_INTERVAL_MS; // And aligned to the minute. - next = next - next % BURNIN_PROTECTION_WAKEUP_INTERVAL_MS + nextWall = nextWall - nextWall % BURNIN_PROTECTION_WAKEUP_INTERVAL_MS + BURNIN_PROTECTION_WAKEUP_INTERVAL_MS; - mAlarmManager.set(AlarmManager.ELAPSED_REALTIME, next, mBurnInProtectionIntent); + // Use elapsed real time that is adjusted to full minute on wall clock. + final long nextElapsed = nowElapsed + (nextWall - nowWall); + if (DEBUG) { + Slog.d(TAG, "scheduling next wake-up, now wall time " + nowWall + + ", next wall: " + nextWall + ", now elapsed: " + nowElapsed + + ", next elapsed: " + nextElapsed); + } + mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME, nextElapsed, + mBurnInProtectionIntent); } else { mAlarmManager.cancel(mBurnInProtectionIntent); mCenteringAnimator.start(); |