From 7fb8e7f4ff524f9131a387efc2649aa78e4ae376 Mon Sep 17 00:00:00 2001 From: Jungshik Jang Date: Thu, 6 Nov 2014 14:03:15 +0900 Subject: [PATCH] CEC: Send regardless of TV's setting. When TV is brought back out of standby, it should send to audio receiver so that TV recovers system audio mode. Current implementation sends only when setting is "ON". In order to fix this, this change sends regardless of TV's setting and update system audio mode according to response of . Bug: 18267467 Change-Id: I2c3c05347c6f2a7a3a5e3772e4e26c77156eb740 --- .../server/hdmi/HdmiCecLocalDeviceTv.java | 4 +--- .../hdmi/SystemAudioAutoInitiationAction.java | 21 ++++++++----------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index f0f79735f61ee..65361656abafc 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 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @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 50f8475cfa323..512d5378a64a2 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 @@ final class SystemAudioAutoInitiationAction extends HdmiCecFeatureAction { } 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(); }