diff options
| author | 2021-03-25 15:44:58 +0000 | |
|---|---|---|
| committer | 2021-03-25 15:44:58 +0000 | |
| commit | 9896cb3eaf50561ba54eb428149a9dc31a3eb6fb (patch) | |
| tree | e92dbae33618a9a949f19dc2c6cc158e958487ff | |
| parent | 71edf5fe406779a9fe1c629279e4c121e4638049 (diff) | |
| parent | ce15561657ea3e46d12b82360e3abcf18f36ca43 (diff) | |
Merge "Remove pending actions when standby" am: 9575e87746 am: ce15561657
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1317235
Change-Id: I39cac312214821b7f9763b78feb6970ed393bea7
| -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 f658e33e0530..58a702527e5f 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -619,8 +619,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) { @@ -796,10 +798,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); + } } } @@ -1656,6 +1660,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { // Remove recording actions. removeAction(OneTouchRecordAction.class); removeAction(TimerRecordingAction.class); + removeAction(NewDeviceAction.class); disableSystemAudioIfExist(); disableArcIfExist(); @@ -1696,12 +1701,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) { |