From 85b7711700ae30103a742c3ec4b86afb066213bb Mon Sep 17 00:00:00 2001 From: Yan Han Date: Mon, 2 Aug 2021 14:46:46 +0200 Subject: [PATCH] Fix stuck HDMI-CEC actions after boot Ensures that all queued actions on local devices are started after boot. Previously, an unstarted SendKeyAction could stick around after boot, blocking any future SendKeyAction from being created. Unit tests omitted because of AOSP incompatibilities. Bug: 193188675 Test: atest HdmiControlServiceTest#normalBoot_queuedActionsStartedAfterBoot manual test: spam volume up on boot with IR volume control enabled Change-Id: I0050ca927bdba939b0b0030a6aa2f6235b11ff5c Merged-In: I0050ca927bdba939b0b0030a6aa2f6235b11ff5c (cherry picked from commit 22dc89a89f869335df3879c09e7337c5b3967e85) --- .../java/com/android/server/hdmi/HdmiControlService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index cca8be8a1bea5..2e1f766b21093 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -556,6 +556,12 @@ public class HdmiControlService extends SystemService { // on boot, if device is interactive, set HDMI CEC state as powered on as well if (mPowerManager.isInteractive() && isPowerStandbyOrTransient()) { mPowerStatus = HdmiControlManager.POWER_STATUS_ON; + // Start all actions that were queued because the device was in standby + if (mAddressAllocated) { + for (HdmiCecLocalDevice localDevice : getAllLocalDevices()) { + localDevice.startQueuedActions(); + } + } } }