diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/DelayedMessageBuffer.java | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/hdmi/DelayedMessageBuffer.java b/services/core/java/com/android/server/hdmi/DelayedMessageBuffer.java index 68311defd3eb..922a2c14c4cc 100644 --- a/services/core/java/com/android/server/hdmi/DelayedMessageBuffer.java +++ b/services/core/java/com/android/server/hdmi/DelayedMessageBuffer.java @@ -54,6 +54,7 @@ final class DelayedMessageBuffer { mBuffer.add(message); break; case Constants.MESSAGE_INITIATE_ARC: + case Constants.MESSAGE_SET_SYSTEM_AUDIO_MODE: mBuffer.add(message); break; default: diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index f40010da3d94..ed7cebbc1b03 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -742,7 +742,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @ServiceThreadOnly void onNewAvrAdded(HdmiDeviceInfo avr) { assertRunOnServiceThread(); - if (getSystemAudioModeSetting()) { + if (getSystemAudioModeSetting() && !isSystemAudioActivated()) { addAndStartAction(new SystemAudioAutoInitiationAction(this, avr.getLogicalAddress())); } if (isArcFeatureEnabled() && !hasAction(SetArcTransmissionStateAction.class)) { @@ -1037,6 +1037,11 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { protected boolean handleSetSystemAudioMode(HdmiCecMessage message) { assertRunOnServiceThread(); if (!isMessageForSystemAudio(message)) { + if (getAvrDeviceInfo() == null) { + // AVR may not have been discovered yet. Delay the message processing. + mDelayedMessageBuffer.add(message); + return true; + } HdmiLogger.warning("Invalid <Set System Audio Mode> message:" + message); mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED); return true; |