From 13c030e828a90fcfc57b52024b72326757cec583 Mon Sep 17 00:00:00 2001 From: Jinsuk Kim Date: Fri, 20 Jun 2014 13:25:17 +0900 Subject: [PATCH] Do not have HdmiControlService report deviceEvent for TV itself DeviceEvent should be used only for the other logical device, not the TV device itself. Also fixed a but not updating the logical address after the allocation. Change-Id: I80cec9d5bb4b95d003c9d1c7ea13f02d7e76b322 --- .../java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java | 7 +++++-- .../java/com/android/server/hdmi/HdmiControlService.java | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) 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); } }