From 90bb5e565a1d55348b64ffe2d0c12821726cf632 Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Thu, 12 Jan 2023 15:43:35 -0800 Subject: 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 --- services/core/java/com/android/server/am/BroadcastProcessQueue.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/BroadcastProcessQueue.java b/services/core/java/com/android/server/am/BroadcastProcessQueue.java index 41d9a11e3eaf..d7cca60b6df4 100644 --- a/services/core/java/com/android/server/am/BroadcastProcessQueue.java +++ b/services/core/java/com/android/server/am/BroadcastProcessQueue.java @@ -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() { -- cgit v1.2.3-59-g8ed1b