Merge "Remove pending actions when standby"

This commit is contained in:
Jay Patel
2021-03-25 14:34:57 +00:00
committed by Gerrit Code Review

View File

@@ -619,9 +619,11 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
} }
} }
if (!mService.isPowerStandbyOrTransient()) {
addAndStartAction(new NewDeviceAction(this, activeSource.logicalAddress, addAndStartAction(new NewDeviceAction(this, activeSource.logicalAddress,
activeSource.physicalAddress, deviceType)); activeSource.physicalAddress, deviceType));
} }
}
private boolean handleNewDeviceAtTheTailOfActivePath(int path) { private boolean handleNewDeviceAtTheTailOfActivePath(int path) {
// Seq #22 // Seq #22
@@ -796,12 +798,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
@ServiceThreadOnly @ServiceThreadOnly
void onNewAvrAdded(HdmiDeviceInfo avr) { void onNewAvrAdded(HdmiDeviceInfo avr) {
assertRunOnServiceThread(); assertRunOnServiceThread();
if (!mService.isPowerStandbyOrTransient()) {
addAndStartAction(new SystemAudioAutoInitiationAction(this, avr.getLogicalAddress())); addAndStartAction(new SystemAudioAutoInitiationAction(this, avr.getLogicalAddress()));
if (isConnected(avr.getPortId()) && isArcFeatureEnabled(avr.getPortId()) if (isConnected(avr.getPortId()) && isArcFeatureEnabled(avr.getPortId())
&& !hasAction(SetArcTransmissionStateAction.class)) { && !hasAction(SetArcTransmissionStateAction.class)) {
startArcAction(true); startArcAction(true);
} }
} }
}
// Clear all device info. // Clear all device info.
@ServiceThreadOnly @ServiceThreadOnly
@@ -1656,6 +1660,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
// Remove recording actions. // Remove recording actions.
removeAction(OneTouchRecordAction.class); removeAction(OneTouchRecordAction.class);
removeAction(TimerRecordingAction.class); removeAction(TimerRecordingAction.class);
removeAction(NewDeviceAction.class);
disableSystemAudioIfExist(); disableSystemAudioIfExist();
disableArcIfExist(); disableArcIfExist();
@@ -1696,12 +1701,20 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
setArcStatus(false); setArcStatus(false);
// Seq #44. // Seq #44.
removeAction(RequestArcInitiationAction.class); removeAllRunningArcAction();
if (!hasAction(RequestArcTerminationAction.class) && isArcEstablished()) { if (!hasAction(RequestArcTerminationAction.class) && isArcEstablished()) {
addAndStartAction(new RequestArcTerminationAction(this, avr.getLogicalAddress())); 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 @Override
@ServiceThreadOnly @ServiceThreadOnly
protected void onStandby(boolean initiatedByCec, int standbyAction) { protected void onStandby(boolean initiatedByCec, int standbyAction) {