diff --git a/services/core/java/com/android/server/hdmi/DelayedMessageBuffer.java b/services/core/java/com/android/server/hdmi/DelayedMessageBuffer.java index c908145a6c72c..77ffe0b5246ac 100644 --- a/services/core/java/com/android/server/hdmi/DelayedMessageBuffer.java +++ b/services/core/java/com/android/server/hdmi/DelayedMessageBuffer.java @@ -76,6 +76,15 @@ final class DelayedMessageBuffer { } } + boolean isBuffered(int opcode) { + for (HdmiCecMessage message : mBuffer) { + if (message.getOpcode() == opcode) { + return true; + } + } + return false; + } + void processAllMessages() { // Use the copied buffer. ArrayList copiedBuffer = new ArrayList(mBuffer); diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index a8941619dc2df..7f2f5a926ed62 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -1427,7 +1427,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { } else { int activePath = mService.getPhysicalAddress(); setActivePath(activePath); - if (!routingForBootup) { + if (!routingForBootup + && !mDelayedMessageBuffer.isBuffered(Constants.MESSAGE_ACTIVE_SOURCE)) { mService.sendCecCommand(HdmiCecMessageBuilder.buildActiveSource(mAddress, activePath)); }