diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index e61bad9182640..52c092cd7e057 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -78,7 +78,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { */ void deviceSelect(int targetAddress, IHdmiControlCallback callback) { assertRunOnServiceThread(); - HdmiCecDeviceInfo targetDevice = mService.getDeviceInfo(targetAddress); + HdmiCecDeviceInfo targetDevice = getDeviceInfo(targetAddress); if (targetDevice == null) { invokeCallback(callback, HdmiCec.RESULT_TARGET_NOT_AVAILABLE); return; @@ -458,8 +458,11 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { final void addCecDevice(HdmiCecDeviceInfo info) { assertRunOnServiceThread(); addDeviceInfo(info); + if (info.getLogicalAddress() == mAddress) { + // The addition of TV device itself should not be notified. + return; + } mService.invokeDeviceEventListeners(info, true); - // TODO: announce new device detection. } /** diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 050ba46c0edd5..d323f34ed1014 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -158,6 +158,7 @@ public final class HdmiControlService extends SystemService { // A container for [Logical Address, Local device info]. final SparseArray devices = new SparseArray<>(); final SparseIntArray finished = new SparseIntArray(); + mCecController.clearLogicalAddress(); for (int type : deviceTypes) { final HdmiCecLocalDevice localDevice = HdmiCecLocalDevice.create(this, type); localDevice.init(); @@ -189,7 +190,7 @@ public final class HdmiControlService extends SystemService { for (int i = 0; i < devices.size(); ++i) { int address = devices.keyAt(i); HdmiCecLocalDevice device = devices.valueAt(i); - device.onAddressAllocated(address); + device.handleAddressAllocated(address); } }