CEC: Buffer <Set System Audio Mode>
<Set System Audio Mode> is another command that needs to be buffered in case the command arrives before the system is ready to process it. When processed, system audio mode will be enabled based on the global setting. Bug: 18809965 Change-Id: Ia6ebc4e2919e1b94498ca28f652c6db95f907f9c
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user