diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiControlService.java | 16 |
1 files 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 f8a74f4f3f55..7d35fc5c8bd5 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 |