Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c83d3e4b authored by Christopher Tate's avatar Christopher Tate
Browse files

Always re-establish kernel alarms when considering new alarm set

As a backstop against missed alarm delivery / wakeups or clock slew,
make sure to always schedule a kernel alarm for the next alarm events
of interest when we've reexamined the set of deliverable alarms.

Bug 19201933

Change-Id: I3cd37a63dfb0c8258941497d4ba516ed00e2edad
parent d7310bd1
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1230,7 +1230,8 @@ class AlarmManagerService extends SystemService {
        if (mAlarmBatches.size() > 0) {
            final Batch firstWakeup = findFirstWakeupBatchLocked();
            final Batch firstBatch = mAlarmBatches.get(0);
            if (firstWakeup != null && mNextWakeup != firstWakeup.start) {
            // always update the kernel alarms, as a backstop against missed wakeups
            if (firstWakeup != null) {
                mNextWakeup = firstWakeup.start;
                setLocked(ELAPSED_REALTIME_WAKEUP, firstWakeup.start);
            }
@@ -1243,7 +1244,8 @@ class AlarmManagerService extends SystemService {
                nextNonWakeup = mNextNonWakeupDeliveryTime;
            }
        }
        if (nextNonWakeup != 0 && mNextNonWakeup != nextNonWakeup) {
        // always update the kernel alarm, as a backstop against missed wakeups
        if (nextNonWakeup != 0) {
            mNextNonWakeup = nextNonWakeup;
            setLocked(ELAPSED_REALTIME, nextNonWakeup);
        }