diff options
| author | 2018-10-18 14:17:47 -0700 | |
|---|---|---|
| committer | 2019-01-11 18:00:45 -0800 | |
| commit | 3eaa85f16f0646ecef303bf1a4a00747912b1220 (patch) | |
| tree | 8fc958f680e81b4ed950bcc5a4315735d275dd15 | |
| parent | 1e4a8cc5420e5eb9a626470217cad3609df259cc (diff) | |
Fix pathToPort logic in HdmiControlService
ag/5306538
The logic is not correct. Only correct when the target device is directly connected
to the current device.
Test: atest com.android.server.hdmi
Change-Id: Ia090bd70069b3457a975b03574347640151cf5ac
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiControlService.java | 9 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java | 10 |
2 files changed, 13 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 1b5147d7225d..2d6e76294e4a 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -828,11 +828,14 @@ public class HdmiControlService extends SystemService { int mask = 0xF000; int finalMask = 0xF000; int physicalAddress = getPhysicalAddress(); - while (physicalAddress != 0) { - physicalAddress &= mask; - mask >>= 4; + int maskedAddress = physicalAddress; + + while (maskedAddress != 0) { + maskedAddress = physicalAddress & mask; finalMask |= mask; + mask >>= 4; } + int portAddress = path & finalMask; return mPortIdMap.get(portAddress, Constants.INVALID_PORT_ID); } diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java index c3f111b92631..67ce13fdef72 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java @@ -137,11 +137,15 @@ public class HdmiControlServiceTest { mLocalDevices.add(mMyAudioSystemDevice); mLocalDevices.add(mMyPlaybackDevice); - mHdmiPortInfo = new HdmiPortInfo[2]; + mHdmiPortInfo = new HdmiPortInfo[4]; mHdmiPortInfo[0] = new HdmiPortInfo(1, HdmiPortInfo.PORT_INPUT, 0x2100, true, false, false); mHdmiPortInfo[1] = new HdmiPortInfo(2, HdmiPortInfo.PORT_INPUT, 0x2200, true, false, false); + mHdmiPortInfo[2] = + new HdmiPortInfo(3, HdmiPortInfo.PORT_INPUT, 0x2000, true, false, false); + mHdmiPortInfo[3] = + new HdmiPortInfo(4, HdmiPortInfo.PORT_INPUT, 0x3000, true, false, false); mNativeWrapper.setPortInfo(mHdmiPortInfo); mHdmiControlService.initPortInfo(); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); @@ -182,8 +186,8 @@ public class HdmiControlServiceTest { @Test public void pathToPort_pathExists_weAreTv() { mNativeWrapper.setPhysicalAddress(0x0000); - assertThat(mHdmiControlService.pathToPortId(0x2120)).isEqualTo(2); - assertThat(mHdmiControlService.pathToPortId(0x1234)).isEqualTo(1); + assertThat(mHdmiControlService.pathToPortId(0x2120)).isEqualTo(3); + assertThat(mHdmiControlService.pathToPortId(0x3234)).isEqualTo(4); } @Test |