diff options
| author | 2021-03-25 15:06:37 +0000 | |
|---|---|---|
| committer | 2021-03-25 15:06:37 +0000 | |
| commit | ce15561657ea3e46d12b82360e3abcf18f36ca43 (patch) | |
| tree | b4bdda7680904fec1319db08e0f6f26a25021e99 | |
| parent | 9f90086a5d4e817db0e75925ff9e6c762d0f7394 (diff) | |
| parent | 9575e87746aa1e943b3ad5e6ffbcc88a9ef6e12f (diff) | |
Merge "Remove pending actions when standby" am: 9575e87746
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1317235
Change-Id: I25e03c823b1b1d870547b4f226b3d63262b198b4
| -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) {  |