diff options
| author | 2021-03-25 16:29:30 +0000 | |
|---|---|---|
| committer | 2021-03-25 16:29:30 +0000 | |
| commit | 099fc4dbbb110eda34adfc8e4ec7ffa0e219b45a (patch) | |
| tree | f6d09c2e3ef968b16c6b56dda0f172484fe4945e | |
| parent | 0019fda9c44d838e6b883473b06f689d7e251041 (diff) | |
| parent | 9896cb3eaf50561ba54eb428149a9dc31a3eb6fb (diff) | |
Merge "Remove pending actions when standby" am: 9575e87746 am: ce15561657 am: 9896cb3eaf
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1317235
Change-Id: Ia551711180c2896ee3f6ec0128ed67ccb2f9e51b
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index cd66a8fc7f01..03fb3a4b98be 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -556,8 +556,10 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { } } - addAndStartAction(new NewDeviceAction(this, activeSource.logicalAddress, - activeSource.physicalAddress, deviceType)); + if (!mService.isPowerStandbyOrTransient()) { + addAndStartAction(new NewDeviceAction(this, activeSource.logicalAddress, + activeSource.physicalAddress, deviceType)); + } } private boolean handleNewDeviceAtTheTailOfActivePath(int path) { @@ -709,10 +711,12 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @ServiceThreadOnly void onNewAvrAdded(HdmiDeviceInfo avr) { assertRunOnServiceThread(); - addAndStartAction(new SystemAudioAutoInitiationAction(this, avr.getLogicalAddress())); - if (isConnected(avr.getPortId()) && isArcFeatureEnabled(avr.getPortId()) - && !hasAction(SetArcTransmissionStateAction.class)) { - startArcAction(true); + if (!mService.isPowerStandbyOrTransient()) { + addAndStartAction(new SystemAudioAutoInitiationAction(this, avr.getLogicalAddress())); + if (isConnected(avr.getPortId()) && isArcFeatureEnabled(avr.getPortId()) + && !hasAction(SetArcTransmissionStateAction.class)) { + startArcAction(true); + } } } @@ -1263,6 +1267,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { // Remove recording actions. removeAction(OneTouchRecordAction.class); removeAction(TimerRecordingAction.class); + removeAction(NewDeviceAction.class); disableSystemAudioIfExist(); disableArcIfExist(); @@ -1303,12 +1308,20 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { setArcStatus(false); // Seq #44. - removeAction(RequestArcInitiationAction.class); + removeAllRunningArcAction(); if (!hasAction(RequestArcTerminationAction.class) && isArcEstablished()) { addAndStartAction(new RequestArcTerminationAction(this, avr.getLogicalAddress())); } } + @ServiceThreadOnly + private void removeAllRunningArcAction() { + // Running or pending actions make TV fail to broadcast <Standby> to connected devices + removeAction(RequestArcTerminationAction.class); + removeAction(RequestArcInitiationAction.class); + removeAction(SetArcTransmissionStateAction.class); + } + @Override @ServiceThreadOnly protected void onStandby(boolean initiatedByCec, int standbyAction) { |