Merge "CEC: Send <Give System Audio Mode> regardless of TV's setting." into lmp-mr1-dev
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index f0f7973..6536165 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -706,9 +706,7 @@
     @ServiceThreadOnly
     void onNewAvrAdded(HdmiDeviceInfo avr) {
         assertRunOnServiceThread();
-        if (getSystemAudioModeSetting()) {
-            addAndStartAction(new SystemAudioAutoInitiationAction(this, avr.getLogicalAddress()));
-        }
+        addAndStartAction(new SystemAudioAutoInitiationAction(this, avr.getLogicalAddress()));
         if (isArcFeatureEnabled()) {
             startArcAction(true);
         }
diff --git a/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java b/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java
index 50f8475..512d537 100644
--- a/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java
+++ b/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java
@@ -71,19 +71,16 @@
     }
 
     private void handleSystemAudioModeStatusMessage() {
-        // If the last setting is system audio, turn on system audio whatever AVR status is.
-        if (tv().getSystemAudioModeSetting()) {
-            if (canChangeSystemAudio()) {
-                addAndStartAction(new SystemAudioActionFromTv(tv(), mAvrAddress, true, null));
-            }
-        } else {
-            // If the last setting is non-system audio, turn off system audio mode
-            // and update system audio status (volume or mute).
-            tv().setSystemAudioMode(false, true);
-            if (canChangeSystemAudio()) {
-                addAndStartAction(new SystemAudioStatusAction(tv(), mAvrAddress, null));
-            }
+        if (!canChangeSystemAudio()) {
+            HdmiLogger.debug("Cannot change system audio mode in auto initiation action.");
+            finish();
+            return;
         }
+
+        boolean systemAudioModeSetting = tv().getSystemAudioModeSetting();
+        // Update AVR's system audio mode regardless of AVR's status.
+        addAndStartAction(new SystemAudioActionFromTv(tv(), mAvrAddress, systemAudioModeSetting,
+                null));
         finish();
     }