Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5f14e32d authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Clear pending actions on local device on wakeup." am: c680c7ef am: 9ea8453e

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1684647

Change-Id: I772449ae3bb0896f7c004e89d8ee64b64b15a359
parents 4afb2fa8 9ea8453e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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;
    }

+10 −3
Original line number Diff line number Diff line
@@ -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;