diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 4f458e60022f5..cfc9132e1ff97 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -881,7 +881,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { HdmiLogger.debug("Set Arc Status[old:%b new:%b]", mArcEstablished, enabled); boolean oldStatus = mArcEstablished; // 1. Enable/disable ARC circuit. - mService.setAudioReturnChannel(getAvrDeviceInfo().getPortId(), enabled); + setAudioReturnChannel(enabled); // 2. Notify arc status to audio service. notifyArcStatusToAudioService(enabled); // 3. Update arc status; @@ -889,6 +889,18 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { return oldStatus; } + /** + * Switch hardware ARC circuit in the system. + */ + @ServiceThreadOnly + void setAudioReturnChannel(boolean enabled) { + assertRunOnServiceThread(); + HdmiDeviceInfo avr = getAvrDeviceInfo(); + if (avr != null) { + mService.setAudioReturnChannel(avr.getPortId(), enabled); + } + } + @ServiceThreadOnly private void updateArcFeatureStatus(int portId, boolean isConnected) { assertRunOnServiceThread(); diff --git a/services/core/java/com/android/server/hdmi/HotplugDetectionAction.java b/services/core/java/com/android/server/hdmi/HotplugDetectionAction.java index 1bbd038e7f4d6..f7555e9802338 100644 --- a/services/core/java/com/android/server/hdmi/HotplugDetectionAction.java +++ b/services/core/java/com/android/server/hdmi/HotplugDetectionAction.java @@ -262,6 +262,7 @@ final class HotplugDetectionAction extends HdmiCecFeatureAction { // Turn off system audio mode and update settings. tv().setSystemAudioMode(false, true); if (tv().isArcEstabilished()) { + tv().setAudioReturnChannel(false); addAndStartAction(new RequestArcTerminationAction(localDevice(), address)); } }