Merge "BroadcastQueue: fix subtle barrier bug."
This commit is contained in:
committed by
Android (Google) Code Review
commit
f2fd2ca10f
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user