Clear pending actions on local device on wakeup.
Test: manual test with AVR after STR (suspend to RAM) Bug: 186084437 Change-Id: I7d9a7d18a2284cfeae6613c13a22e4a0e411b0ce
This commit is contained in:
@@ -209,6 +209,12 @@ abstract class HdmiCecLocalDevice {
|
||||
void init() {
|
||||
assertRunOnServiceThread();
|
||||
mPreferredAddress = getPreferredAddress();
|
||||
if (mHandler.hasMessages(MSG_DISABLE_DEVICE_TIMEOUT)) {
|
||||
// Remove and trigger the queued message for clearing all actions when going to standby.
|
||||
// This is necessary because the device may wake up before the message is triggered.
|
||||
mHandler.removeMessages(MSG_DISABLE_DEVICE_TIMEOUT);
|
||||
handleDisableDeviceTimeout();
|
||||
}
|
||||
mPendingActionClearedCallback = null;
|
||||
}
|
||||
|
||||
|
||||
@@ -3131,7 +3131,7 @@ public class HdmiControlService extends SystemService {
|
||||
Slog.v(TAG, "On standby-action cleared:" + device.mDeviceType);
|
||||
devices.remove(device);
|
||||
if (devices.isEmpty()) {
|
||||
onStandbyCompleted(standbyAction);
|
||||
onPendingActionsCleared(standbyAction);
|
||||
// We will not clear local devices here, since some OEM/SOC will keep passing
|
||||
// the received packets until the application processor enters to the sleep
|
||||
// actually.
|
||||
@@ -3193,10 +3193,17 @@ public class HdmiControlService extends SystemService {
|
||||
mHdmiCecNetwork.clearLocalDevices();
|
||||
}
|
||||
|
||||
/**
|
||||
* Normally called after all devices have cleared their pending actions, to execute the final
|
||||
* phase of the standby flow.
|
||||
*
|
||||
* This can also be called during wakeup, when pending actions are cleared after failing to be
|
||||
* cleared during standby. In this case, it does not execute the standby flow.
|
||||
*/
|
||||
@ServiceThreadOnly
|
||||
private void onStandbyCompleted(int standbyAction) {
|
||||
private void onPendingActionsCleared(int standbyAction) {
|
||||
assertRunOnServiceThread();
|
||||
Slog.v(TAG, "onStandbyCompleted");
|
||||
Slog.v(TAG, "onPendingActionsCleared");
|
||||
|
||||
if (!mPowerStatusController.isPowerStatusTransientToStandby()) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user