am 470b77b8: Merge "TIF: change input state based on the number of available streams" into lmp-mr1-dev
* commit '470b77b8cf185f75ef38e8757be72d46b504cf9f':
TIF: change input state based on the number of available streams
diff --git a/services/core/java/com/android/server/tv/TvInputHardwareManager.java b/services/core/java/com/android/server/tv/TvInputHardwareManager.java
index 7d031ea..48e3249 100644
--- a/services/core/java/com/android/server/tv/TvInputHardwareManager.java
+++ b/services/core/java/com/android/server/tv/TvInputHardwareManager.java
@@ -188,6 +188,11 @@
return;
}
connection.updateConfigsLocked(configs);
+ String inputId = mHardwareInputIdMap.get(deviceId);
+ if (inputId != null) {
+ mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
+ convertConnectedToState(config.length > 0), 0, inputId).sendToTarget();
+ }
try {
connection.getCallbackLocked().onStreamConfigChanged(configs);
} catch (RemoteException e) {
@@ -257,6 +262,9 @@
mHardwareInputIdMap.put(deviceId, info.getId());
mInputMap.put(info.getId(), info);
+ // Process pending state changes
+
+ // For logical HDMI devices, they have information from HDMI CEC signals.
for (int i = 0; i < mHdmiStateMap.size(); ++i) {
TvInputHardwareInfo hardwareInfo =
findHardwareInfoForHdmiPortLocked(mHdmiStateMap.keyAt(i));
@@ -268,8 +276,17 @@
mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
convertConnectedToState(mHdmiStateMap.valueAt(i)), 0,
inputId).sendToTarget();
+ return;
}
}
+ // For the rest of the devices, we can tell by the number of available streams.
+ Connection connection = mConnections.get(deviceId);
+ if (connection != null) {
+ mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
+ convertConnectedToState(connection.getConfigsLocked().length > 0), 0,
+ info.getId()).sendToTarget();
+ return;
+ }
}
}