diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java index b0c1a8aaf3b60..b894fd7a08b0a 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java @@ -631,6 +631,7 @@ abstract class HdmiCecLocalDevice { synchronized (mLock) { mActiveRoutingPath = path; } + mService.setActivePortId(pathToPortId(path)); } /** @@ -649,11 +650,9 @@ abstract class HdmiCecLocalDevice { * @param portId the new active port id */ void setActivePortId(int portId) { - synchronized (mLock) { - // We update active routing path instead, since we get the active port id from - // the active routing path. - mActiveRoutingPath = mService.portIdToPath(portId); - } + // We update active routing path instead, since we get the active port id from + // the active routing path. + setActivePath(mService.portIdToPath(portId)); } @ServiceThreadOnly diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 9a8ef3a109d50..6f33f75fe4b85 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -239,6 +239,9 @@ public final class HdmiControlService extends SystemService { @ServiceThreadOnly private boolean mWakeUpMessageReceived = false; + @ServiceThreadOnly + private int mActivePortId = Constants.INVALID_PORT_ID; + public HdmiControlService(Context context) { super(context); mLocalDevices = HdmiUtils.asImmutableList(getContext().getResources().getIntArray( @@ -1718,4 +1721,10 @@ public final class HdmiControlService extends SystemService { }); } } + + @ServiceThreadOnly + void setActivePortId(int portId) { + assertRunOnServiceThread(); + mActivePortId = portId; + } }