Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7cd4a589 authored by Jinsuk Kim's avatar Jinsuk Kim
Browse files

CEC: Add CEC device upon receiving <Report Physical Address>

Help devices be processed sooner when new device detection operation
takes longer than usual.

Bug: 19181472
Change-Id: I96c29081a9c7c9f73ebcd027ed9d18056dc89bf9
parent fc921d19
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -580,6 +580,12 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
        if (!isInDeviceList(address, path)) {
            handleNewDeviceAtTheTailOfActivePath(path);
        }

        // Add the device ahead with default information to handle <Active Source>
        // promptly, rather than waiting till the new device action is finished.
        HdmiDeviceInfo deviceInfo = new HdmiDeviceInfo(address, path, getPortId(path), type,
                Constants.UNKNOWN_VENDOR_ID, HdmiUtils.getDefaultDeviceName(address));
        addCecDevice(deviceInfo);
        startNewDeviceAction(ActiveSource.of(address, path), type);
        return true;
    }
@@ -1465,7 +1471,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
     * @return true if exist; otherwise false
     */
    @ServiceThreadOnly
    private boolean isInDeviceList(int logicalAddress, int physicalAddress) {
    boolean isInDeviceList(int logicalAddress, int physicalAddress) {
        assertRunOnServiceThread();
        HdmiDeviceInfo device = getCecDeviceInfo(logicalAddress);
        if (device == null) {
+6 −0
Original line number Diff line number Diff line
@@ -163,6 +163,12 @@ final class NewDeviceAction extends HdmiCecFeatureAction {
    }

    private void addDeviceInfo() {
        // The device should be in the device list with default information.
        if (!tv().isInDeviceList(mDeviceLogicalAddress, mDevicePhysicalAddress)) {
            Slog.w(TAG, String.format("Device not found (%02x, %04x)",
                    mDeviceLogicalAddress, mDevicePhysicalAddress));
            return;
        }
        if (mDisplayName == null) {
            mDisplayName = HdmiUtils.getDefaultDeviceName(mDeviceLogicalAddress);
        }