diff options
| author | 2015-01-06 11:30:56 +0900 | |
|---|---|---|
| committer | 2015-01-06 11:52:14 +0900 | |
| commit | 6ad7cbde22fe9752082ce01c9b9be213b07afefc (patch) | |
| tree | 12979a9d96aef5594229da3d8902f7a4b488eb3b | |
| parent | ad1e3d7df42376cd2a257b6c3b2fed540658a6e3 (diff) | |
CEC: Make deviceSelect work for MHL device
MHL device works on hotplug but not when API deviceSelect is invoked
to select it due to a bug not finding the right MHL device instance.
This CL rectifies it by searching for not only CEC but MHL devices
attached to TV.
Bug: 18909552
Change-Id: I4df1ead836090eb3a7476b7738be47a6970edb7d
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java | 8 | ||||
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiControlService.java | 10 |
2 files changed, 16 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index ed7cebbc1b03..90dbd1765200 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -326,8 +326,12 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { ActiveSource activeSource = getActiveSource(); HdmiDeviceInfo info = getCecDeviceInfo(activeSource.logicalAddress); if (info == null) { - info = new HdmiDeviceInfo(Constants.ADDR_INVALID, path, getActivePortId(), - HdmiDeviceInfo.DEVICE_RESERVED, 0, null); + info = mService.getDeviceInfoByPort(getActivePortId()); + if (info == null) { + // No CEC/MHL device is present at the port. Attempt to switch to + // the hardware port itself for non-CEC devices that may be connected. + info = new HdmiDeviceInfo(path, getActivePortId()); + } } mService.invokeInputChangeListener(info); } diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 8ce6caf30c84..e8cb7204e5f6 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -672,6 +672,16 @@ public final class HdmiControlService extends SystemService { return tv() == null ? null : tv().getCecDeviceInfo(logicalAddress); } + @ServiceThreadOnly + HdmiDeviceInfo getDeviceInfoByPort(int port) { + assertRunOnServiceThread(); + HdmiMhlLocalDeviceStub info = mMhlController.getLocalDevice(port); + if (info != null) { + return info.getInfo(); + } + return null; + } + /** * Returns version of CEC. */ |