summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dianne Hackborn <hackbod@google.com> 2016-05-24 16:56:00 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-05-24 16:56:01 +0000
commitcdcc53d007d613ccfcf3a36ce22fa6823c5fe954 (patch)
tree286eb300a23637c6928ded93be96e45280b1e187
parent2a4001ee62f3374d7fffed72d71f77c5a833c331 (diff)
parentaa9a59d410eea64e3bb86b2f9bf1f03206a3e1f0 (diff)
Merge "Work on issue #27995384: Time in the top bar different..." into nyc-dev
-rw-r--r--services/core/java/com/android/server/AlarmManagerService.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index 1edc9b18c697..8ad6e6afcce5 100644
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -125,6 +125,8 @@ class AlarmManagerService extends SystemService {
long mNativeData;
private long mNextWakeup;
private long mNextNonWakeup;
+ private long mLastWakeupSet;
+ private long mLastWakeup;
int mBroadcastRefCount = 0;
PowerManager.WakeLock mWakeLock;
boolean mLastWakeLockUnimportantForLogging;
@@ -1400,6 +1402,9 @@ class AlarmManagerService extends SystemService {
pw.print(" = "); pw.println(sdf.format(new Date(nextNonWakeupRTC)));
pw.print(" Next wakeup: "); TimeUtils.formatDuration(mNextWakeup, nowELAPSED, pw);
pw.print(" = "); pw.println(sdf.format(new Date(nextWakeupRTC)));
+ pw.print(" Last wakeup: "); TimeUtils.formatDuration(mLastWakeup, nowELAPSED, pw);
+ pw.print(" set at "); TimeUtils.formatDuration(mLastWakeupSet, nowELAPSED, pw);
+ pw.println();
pw.print(" Num time change events: "); pw.println(mNumTimeChanged);
pw.println(" mDeviceIdleUserWhitelist=" + Arrays.toString(mDeviceIdleUserWhitelist));
@@ -1838,6 +1843,7 @@ class AlarmManagerService extends SystemService {
final Batch firstBatch = mAlarmBatches.get(0);
if (firstWakeup != null && mNextWakeup != firstWakeup.start) {
mNextWakeup = firstWakeup.start;
+ mLastWakeupSet = SystemClock.elapsedRealtime();
setLocked(ELAPSED_REALTIME_WAKEUP, firstWakeup.start);
}
if (firstBatch != firstWakeup) {
@@ -2436,6 +2442,7 @@ class AlarmManagerService extends SystemService {
while (true)
{
int result = waitForAlarm(mNativeData);
+ mLastWakeup = SystemClock.elapsedRealtime();
triggerList.clear();
@@ -2536,6 +2543,11 @@ class AlarmManagerService extends SystemService {
deliverAlarmsLocked(triggerList, nowELAPSED);
}
}
+
+ } else {
+ // Just in case -- even though no wakeup flag was set, make sure
+ // we have updated the kernel to the next alarm time.
+ rescheduleKernelAlarmsLocked();
}
}
}