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

Commit f2fd2ca1 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "BroadcastQueue: fix subtle barrier bug."

parents d91cb407 f965a7a8
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -596,20 +596,21 @@ class BroadcastProcessQueue {
     * barrier timestamp that are still waiting to be delivered.
     */
    public boolean isBeyondBarrierLocked(@UptimeMillisLong long barrierTime) {
        if (mActive != null) {
            return mActive.enqueueTime > barrierTime;
        }
        final SomeArgs next = mPending.peekFirst();
        final SomeArgs nextUrgent = mPendingUrgent.peekFirst();
        final SomeArgs nextOffload = mPendingOffload.peekFirst();
        // Empty queue is past any barrier
        final boolean nextLater = (next == null)

        // Empty records are always past any barrier
        final boolean activeBeyond = (mActive == null)
                || mActive.enqueueTime > barrierTime;
        final boolean nextBeyond = (next == null)
                || ((BroadcastRecord) next.arg1).enqueueTime > barrierTime;
        final boolean nextUrgentLater = (nextUrgent == null)
        final boolean nextUrgentBeyond = (nextUrgent == null)
                || ((BroadcastRecord) nextUrgent.arg1).enqueueTime > barrierTime;
        final boolean nextOffloadLater = (nextOffload == null)
        final boolean nextOffloadBeyond = (nextOffload == null)
                || ((BroadcastRecord) nextOffload.arg1).enqueueTime > barrierTime;
        return nextLater && nextUrgentLater && nextOffloadLater;

        return activeBeyond && nextBeyond && nextUrgentBeyond && nextOffloadBeyond;
    }

    public boolean isRunnable() {