From d47abefc8269dae7fdfa2bb102bcb89cbea7c7b0 Mon Sep 17 00:00:00 2001 From: Jinsuk Kim Date: Sat, 17 Jan 2015 07:38:24 +0900 Subject: CEC: Make TV try to allocate logical address 0 first HDMI Spec says TV shall try to allocate TV() logical address, unlike other kinds of devices that are recommended to use the previously allocated one. Also included are small changes: - reply with 'can not provide source' if TV has no source to provide - return the present device info if we have one at the given path Bug: 19045081 Change-Id: Icf17cb581f0ef2274e252ec5665f80bb1c08b494 --- .../java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java | 11 +++-------- .../core/java/com/android/server/hdmi/HdmiControlService.java | 3 ++- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 7f2f5a926ed6..4673b8cae5f1 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -222,18 +222,13 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { } @Override - @ServiceThreadOnly protected int getPreferredAddress() { - assertRunOnServiceThread(); - return SystemProperties.getInt(Constants.PROPERTY_PREFERRED_ADDRESS_TV, - Constants.ADDR_UNREGISTERED); + return Constants.ADDR_TV; } @Override - @ServiceThreadOnly protected void setPreferredAddress(int addr) { - assertRunOnServiceThread(); - SystemProperties.set(Constants.PROPERTY_PREFERRED_ADDRESS_TV, String.valueOf(addr)); + Slog.w(TAG, "Preferred addres will not be stored for TV"); } @Override @@ -1631,7 +1626,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN); - return Constants.ABORT_UNABLE_TO_DETERMINE; + return Constants.ABORT_CANNOT_PROVIDE_SOURCE; } addAndStartAction(new OneTouchRecordAction(this, recorderAddress, recordSource)); diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 37909cca4887..2e7f0a508940 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -1192,7 +1192,8 @@ public final class HdmiControlService extends SystemService { } int activePath = tv.getActivePath(); if (activePath != HdmiDeviceInfo.PATH_INVALID) { - return new HdmiDeviceInfo(activePath, tv.getActivePortId()); + HdmiDeviceInfo info = tv.getDeviceInfoByPath(activePath); + return (info != null) ? info : new HdmiDeviceInfo(activePath, tv.getActivePortId()); } return null; } -- cgit v1.2.3-59-g8ed1b