From 75fbb23955859402ad5e4fa5023a79edec4d460a Mon Sep 17 00:00:00 2001 From: "eric_kuang.rs" Date: Mon, 19 Sep 2022 14:12:20 +0800 Subject: [PATCH] Get HDMI CEC physical address with service thread, so TIF can get it for Player. Change-Id: Ice88ddf519fbe0c1af0134bd8baecf643eac6ebf Bug: 241318914 Test: manual test --- .../android/server/hdmi/HdmiControlService.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index f8a74f4f3f554..7d35fc5c8bd58 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -266,6 +266,10 @@ public class HdmiControlService extends SystemService { // Make sure HdmiCecConfig is instantiated and the XMLs are read. private HdmiCecConfig mHdmiCecConfig; + // Last return value of getPhysicalAddress(). Only updated on calls of getPhysicalAddress(). + // Does not represent the current physical address at all times. Not to be used as a cache. + private int mPhysicalAddress = Constants.INVALID_PHYSICAL_ADDRESS; + /** * Interface to report send result. */ @@ -2080,9 +2084,15 @@ public class HdmiControlService extends SystemService { @Override public int getPhysicalAddress() { initBinderCall(); - synchronized (mLock) { - return mHdmiCecNetwork.getPhysicalAddress(); - } + runOnServiceThread(new Runnable() { + @Override + public void run() { + synchronized (mLock) { + mPhysicalAddress = mHdmiCecNetwork.getPhysicalAddress(); + } + } + }); + return mPhysicalAddress; } @Override