summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiControlService.java16
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