From fbc778ea5396a39132b21d4001e8042747f8c9ac Mon Sep 17 00:00:00 2001 From: Nathalie Le Clair Date: Mon, 15 Feb 2021 15:08:37 +0100 Subject: [PATCH] Use up-to-date power status in DeviceSelectAction The power status can have changed since the start of the action. Read the most up-to-date value from HdmiCecNetwork. Test: atest DeviceSelectActionTest Fixes: 180290156 Change-Id: Ia872d0a1de3055d2e36a662120479be2277b519e --- .../java/com/android/server/hdmi/DeviceSelectAction.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/DeviceSelectAction.java b/services/core/java/com/android/server/hdmi/DeviceSelectAction.java index cb47bb25f1525..86a8e36d748d3 100644 --- a/services/core/java/com/android/server/hdmi/DeviceSelectAction.java +++ b/services/core/java/com/android/server/hdmi/DeviceSelectAction.java @@ -103,10 +103,11 @@ final class DeviceSelectAction extends HdmiCecFeatureAction { if (mIsCec20) { sendSetStreamPath(); } - if (!mIsCec20 || mTarget.getDevicePowerStatus() - == HdmiControlManager.POWER_STATUS_UNKNOWN) { + int targetPowerStatus = localDevice().mService.getHdmiCecNetwork() + .getCecDeviceInfo(getTargetAddress()).getDevicePowerStatus(); + if (!mIsCec20 || targetPowerStatus == HdmiControlManager.POWER_STATUS_UNKNOWN) { queryDevicePowerStatus(); - } else if (mTarget.getDevicePowerStatus() == HdmiControlManager.POWER_STATUS_ON) { + } else if (targetPowerStatus == HdmiControlManager.POWER_STATUS_ON) { invokeCallbackAndFinish(HdmiControlManager.RESULT_SUCCESS); return true; }