From 8d3d4689a9da37b0c7f58e7571005cdb12fd35bd Mon Sep 17 00:00:00 2001 From: "daren.liao" Date: Wed, 13 May 2020 17:04:13 +0800 Subject: [PATCH] Set SAM according to TV's settings [Description] Issue occur when 1) SystemAudioAutoInitiationAction timeout 2) receive [OFF] 3) TV handles [OFF] In this case, TV will turn off SAM and ARC, which is unexpected Bug: 156579158 Test: by OEM, AVR attached TV power off and on. Change-Id: I2c68fe48210f132283f63d51646455039ff8b53a --- .../server/hdmi/HdmiCecLocalDeviceTv.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 2c0ddaf35182d..ea1bbec83c6c8 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -1165,7 +1165,21 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { // Ignore this message. return true; } - setSystemAudioMode(HdmiUtils.parseCommandParamSystemAudioStatus(message)); + boolean tvSystemAudioMode = isSystemAudioControlFeatureEnabled(); + boolean avrSystemAudioMode = HdmiUtils.parseCommandParamSystemAudioStatus(message); + // Set System Audio Mode according to TV's settings. + // Handle here only when + // SystemAudioAutoInitiationAction timeout + HdmiDeviceInfo avr = getAvrDeviceInfo(); + if (avr == null) { + setSystemAudioMode(false); + } else if (avrSystemAudioMode != tvSystemAudioMode) { + addAndStartAction(new SystemAudioActionFromTv(this, avr.getLogicalAddress(), + tvSystemAudioMode, null)); + } else { + setSystemAudioMode(tvSystemAudioMode); + } + return true; }