BroadcastProcessQueue: fix wait-for-broadcast-barrier/idle

wait-for-broadcast-barrier/idle was trying to wait for
infinitely-deferred broadcasts. That's not necessary.

Test: atest WMShellFlickerTests:ExpandPipOnDoubleClickTest with barrier
Test: atest PlatformScenarioTests:android.platform.test.scenario.sysui.statusbar.StatusUpdate#testBatteryDrain
Bug: 261065790
Change-Id: Ib4de69cfd5b9cb6b36cd4d59096e9edba9b89720
This commit is contained in:
Tim Murray
2023-01-12 15:43:35 -08:00
parent f5340028de
commit 90bb5e565a

View File

@@ -747,7 +747,7 @@ class BroadcastProcessQueue {
* be delivered at some point in the future.
*/
public boolean isIdle() {
return !isActive() && isEmpty();
return (!isActive() && isEmpty()) || isDeferredUntilActive();
}
/**
@@ -769,7 +769,8 @@ class BroadcastProcessQueue {
final boolean nextOffloadBeyond = (nextOffload == null)
|| ((BroadcastRecord) nextOffload.arg1).enqueueTime > barrierTime;
return activeBeyond && nextBeyond && nextUrgentBeyond && nextOffloadBeyond;
return (activeBeyond && nextBeyond && nextUrgentBeyond && nextOffloadBeyond)
|| isDeferredUntilActive();
}
public boolean isRunnable() {