Obtain TV power status correctly in HdmiControlService
Bug: 15845654
Change-Id: I28b97e7ecb462b4fbaf6ac573e4d0fc9fcf724da
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index 810e670..1b88aea 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -215,6 +215,10 @@
addAndStartAction(new RoutingControlAction(this, newPath, false, callback));
}
+ int getPowerStatus() {
+ return mService.getPowerStatus();
+ }
+
/**
* Sends key to a target CEC device.
*
diff --git a/services/core/java/com/android/server/hdmi/RoutingControlAction.java b/services/core/java/com/android/server/hdmi/RoutingControlAction.java
index 5f3c654..04e5cac 100644
--- a/services/core/java/com/android/server/hdmi/RoutingControlAction.java
+++ b/services/core/java/com/android/server/hdmi/RoutingControlAction.java
@@ -108,9 +108,8 @@
}
private void handleReportPowerStatus(int devicePowerStatus) {
- int tvPowerStatus = getTvPowerStatus();
- if (isPowerStatusOnOrTransientToOn(tvPowerStatus)) {
- if (isPowerStatusOnOrTransientToOn(devicePowerStatus)) {
+ if (isPowerOnOrTransient(getTvPowerStatus())) {
+ if (isPowerOnOrTransient(devicePowerStatus)) {
sendSetStreamPath();
} else {
tv().updateActivePortId(tv().pathToPortId(mCurrentRoutingPath));
@@ -121,11 +120,10 @@
}
private int getTvPowerStatus() {
- // TODO: Obtain TV power status.
- return HdmiCec.POWER_STATUS_ON;
+ return tv().getPowerStatus();
}
- private static boolean isPowerStatusOnOrTransientToOn(int status) {
+ private static boolean isPowerOnOrTransient(int status) {
return status == HdmiCec.POWER_STATUS_ON || status == HdmiCec.POWER_STATUS_TRANSIENT_TO_ON;
}
@@ -156,8 +154,7 @@
}
return;
case STATE_WAIT_FOR_REPORT_POWER_STATUS:
- int tvPowerStatus = getTvPowerStatus();
- if (isPowerStatusOnOrTransientToOn(tvPowerStatus)) {
+ if (isPowerOnOrTransient(getTvPowerStatus())) {
tv().updateActivePortId(tv().pathToPortId(mCurrentRoutingPath));
sendSetStreamPath();
}