diff options
| author | 2016-05-24 16:56:00 +0000 | |
|---|---|---|
| committer | 2016-05-24 16:56:01 +0000 | |
| commit | cdcc53d007d613ccfcf3a36ce22fa6823c5fe954 (patch) | |
| tree | 286eb300a23637c6928ded93be96e45280b1e187 | |
| parent | 2a4001ee62f3374d7fffed72d71f77c5a833c331 (diff) | |
| parent | aa9a59d410eea64e3bb86b2f9bf1f03206a3e1f0 (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.java | 12 |
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(); } } } |