Merge "Clear pending actions on local device on wakeup."
This commit is contained in:
@@ -209,6 +209,12 @@ abstract class HdmiCecLocalDevice {
|
|||||||
void init() {
|
void init() {
|
||||||
assertRunOnServiceThread();
|
assertRunOnServiceThread();
|
||||||
mPreferredAddress = getPreferredAddress();
|
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;
|
mPendingActionClearedCallback = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3131,7 +3131,7 @@ public class HdmiControlService extends SystemService {
|
|||||||
Slog.v(TAG, "On standby-action cleared:" + device.mDeviceType);
|
Slog.v(TAG, "On standby-action cleared:" + device.mDeviceType);
|
||||||
devices.remove(device);
|
devices.remove(device);
|
||||||
if (devices.isEmpty()) {
|
if (devices.isEmpty()) {
|
||||||
onStandbyCompleted(standbyAction);
|
onPendingActionsCleared(standbyAction);
|
||||||
// We will not clear local devices here, since some OEM/SOC will keep passing
|
// 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
|
// the received packets until the application processor enters to the sleep
|
||||||
// actually.
|
// actually.
|
||||||
@@ -3193,10 +3193,17 @@ public class HdmiControlService extends SystemService {
|
|||||||
mHdmiCecNetwork.clearLocalDevices();
|
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
|
@ServiceThreadOnly
|
||||||
private void onStandbyCompleted(int standbyAction) {
|
private void onPendingActionsCleared(int standbyAction) {
|
||||||
assertRunOnServiceThread();
|
assertRunOnServiceThread();
|
||||||
Slog.v(TAG, "onStandbyCompleted");
|
Slog.v(TAG, "onPendingActionsCleared");
|
||||||
|
|
||||||
if (!mPowerStatusController.isPowerStatusTransientToStandby()) {
|
if (!mPowerStatusController.isPowerStatusTransientToStandby()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user