From fc462b962cde0a96193fc780d6466cf8b0774112 Mon Sep 17 00:00:00 2001 From: Donghyun Cho Date: Fri, 13 May 2016 21:06:02 +0900 Subject: [PATCH] CEC: Defer CEC actions until logical address is available If logical address of device is not set, CEC actions will not work correctly because outgoing CEC message's source address will be wrong. In this case, CEC actions should be deferred until address allocation finishes. Bug: 28709242 Change-Id: I09e199c6144a5b341e3a6113022d0243fcfc3cf5 --- .../core/java/com/android/server/hdmi/HdmiCecLocalDevice.java | 2 +- .../core/java/com/android/server/hdmi/HdmiControlService.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java index 7999321c6c799..44aafa8a33d83 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java @@ -650,7 +650,7 @@ abstract class HdmiCecLocalDevice { void addAndStartAction(final HdmiCecFeatureAction action) { assertRunOnServiceThread(); mActions.add(action); - if (mService.isPowerStandby()) { + if (mService.isPowerStandby() || !mService.isAddressAllocated()) { Slog.i(TAG, "Not ready to start action. Queued for deferred start:" + action); return; } diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index e07d72f0e7d1f..5dc9d02a71c5d 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -641,6 +641,10 @@ public final class HdmiControlService extends SystemService { } } + boolean isAddressAllocated() { + return mAddressAllocated; + } + // Initialize HDMI port information. Combine the information from CEC and MHL HAL and // keep them in one place. @ServiceThreadOnly