summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiControlService.java19
1 files changed, 10 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java
index b06dba9f9627..268e844a7a0a 100644
--- a/services/core/java/com/android/server/hdmi/HdmiControlService.java
+++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java
@@ -303,19 +303,19 @@ public final class HdmiControlService extends SystemService {
private final class CecMessageBuffer {
private List<HdmiCecMessage> mBuffer = new ArrayList<>();
- public void bufferMessage(HdmiCecMessage message) {
+ public boolean bufferMessage(HdmiCecMessage message) {
switch (message.getOpcode()) {
case Constants.MESSAGE_ACTIVE_SOURCE:
bufferActiveSource(message);
- break;
+ return true;
case Constants.MESSAGE_IMAGE_VIEW_ON:
case Constants.MESSAGE_TEXT_VIEW_ON:
bufferImageOrTextViewOn(message);
- break;
+ return true;
// Add here if new message that needs to buffer
default:
// Do not need to buffer messages other than above
- break;
+ return false;
}
}
@@ -869,10 +869,6 @@ public final class HdmiControlService extends SystemService {
@ServiceThreadOnly
boolean handleCecCommand(HdmiCecMessage message) {
assertRunOnServiceThread();
- if (!mAddressAllocated) {
- mCecMessageBuffer.bufferMessage(message);
- return true;
- }
int errorCode = mMessageValidator.isValid(message);
if (errorCode != HdmiCecMessageValidator.OK) {
// We'll not response on the messages with the invalid source or destination
@@ -882,7 +878,12 @@ public final class HdmiControlService extends SystemService {
}
return true;
}
- return dispatchMessageToLocalDevice(message);
+
+ if (dispatchMessageToLocalDevice(message)) {
+ return true;
+ }
+
+ return (!mAddressAllocated) ? mCecMessageBuffer.bufferMessage(message) : false;
}
void enableAudioReturnChannel(int portId, boolean enabled) {