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

Commit 14c00788 authored by Wei Sheng Shih's avatar Wei Sheng Shih
Browse files

Revert "Use display awake signal to replace screen-off signal for sleep token."

This reverts commit 0760ca28.

Reason for revert: b/203378136

Change-Id: I3e092625b49f8fa6b56cad898657cbc5844fe026
parent 0760ca28
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -507,6 +507,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    private boolean mPendingKeyguardOccluded;
    private boolean mKeyguardOccludedChanged;

    private ActivityTaskManagerInternal.SleepTokenAcquirer mScreenOffSleepTokenAcquirer;
    Intent mHomeIntent;
    Intent mCarDockIntent;
    Intent mDeskDockIntent;
@@ -1622,6 +1623,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                new AccessibilityShortcutController(mContext, new Handler(), mCurrentUserId);
        mLogger = new MetricsLogger();

        mScreenOffSleepTokenAcquirer = mActivityTaskManagerInternal
                .createSleepTokenAcquirer("ScreenOff");

        Resources res = mContext.getResources();
        mWakeOnDpadKeyPress =
                res.getBoolean(com.android.internal.R.bool.config_wakeOnDpadKeyPress);
@@ -4381,6 +4385,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        if (DEBUG_WAKEUP) Slog.i(TAG, "Display" + displayId + " turned off...");

        if (displayId == DEFAULT_DISPLAY) {
            updateScreenOffSleepToken(true);
            mRequestedOrSleepingDefaultDisplay = false;
            mDefaultDisplayPolicy.screenTurnedOff();
            synchronized (mLock) {
@@ -4413,6 +4418,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        if (displayId == DEFAULT_DISPLAY) {
            Trace.asyncTraceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "screenTurningOn",
                    0 /* cookie */);
            updateScreenOffSleepToken(false);
            mDefaultDisplayPolicy.screenTurnedOn(screenOnListener);
            mBootAnimationDismissable = false;

@@ -4927,6 +4933,15 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }
    }

    // TODO (multidisplay): Support multiple displays in WindowManagerPolicy.
    private void updateScreenOffSleepToken(boolean acquire) {
        if (acquire) {
            mScreenOffSleepTokenAcquirer.acquire(DEFAULT_DISPLAY);
        } else {
            mScreenOffSleepTokenAcquirer.release(DEFAULT_DISPLAY);
        }
    }

    /** {@inheritDoc} */
    @Override
    public void enableScreenAfterBoot() {
+29 −0
Original line number Diff line number Diff line
@@ -123,6 +123,35 @@ public abstract class ActivityTaskManagerInternal {
        void onKeyguardStateChanged(boolean isShowing);
    }

    /**
     * Sleep tokens cause the activity manager to put the top activity to sleep.
     * They are used by components such as dreams that may hide and block interaction
     * with underlying activities.
     * The Acquirer provides an interface that encapsulates the underlying work, so the user does
     * not need to handle the token by him/herself.
     */
    public interface SleepTokenAcquirer {

        /**
         * Acquires a sleep token.
         * @param displayId The display to apply to.
         */
        void acquire(int displayId);

        /**
         * Releases the sleep token.
         * @param displayId The display to apply to.
         */
        void release(int displayId);
    }

    /**
     * Creates a sleep token acquirer for the specified display with the specified tag.
     *
     * @param tag A string identifying the purpose (eg. "Dream").
     */
    public abstract SleepTokenAcquirer createSleepTokenAcquirer(@NonNull String tag);

    /**
     * Returns home activity for the specified user.
     *
+12 −17
Original line number Diff line number Diff line
@@ -4518,25 +4518,17 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                reason);
    }

    /**
     * Sleep tokens cause the activity manager to put the top activity to sleep.
     * They are used by components such as dreams that may hide and block interaction
     * with underlying activities.
     */
    final class SleepTokenAcquirer {
    final class SleepTokenAcquirerImpl implements ActivityTaskManagerInternal.SleepTokenAcquirer {
        private final String mTag;
        private final SparseArray<RootWindowContainer.SleepToken> mSleepTokens =
                new SparseArray<>();

        SleepTokenAcquirer(@NonNull String tag) {
        SleepTokenAcquirerImpl(@NonNull String tag) {
            mTag = tag;
        }

        /**
         * Acquires a sleep token.
         * @param displayId The display to apply to.
         */
        void acquire(int displayId) {
        @Override
        public void acquire(int displayId) {
            synchronized (mGlobalLock) {
                if (!mSleepTokens.contains(displayId)) {
                    mSleepTokens.append(displayId,
@@ -4546,11 +4538,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
            }
        }

        /**
         * Releases the sleep token.
         * @param displayId The display to apply to.
         */
        void release(int displayId) {
        @Override
        public void release(int displayId) {
            synchronized (mGlobalLock) {
                final RootWindowContainer.SleepToken token = mSleepTokens.get(displayId);
                if (token != null) {
@@ -5227,6 +5216,12 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
    }

    final class LocalService extends ActivityTaskManagerInternal {
        @Override
        public SleepTokenAcquirer createSleepTokenAcquirer(@NonNull String tag) {
            Objects.requireNonNull(tag);
            return new SleepTokenAcquirerImpl(tag);
        }

        @Override
        public ComponentName getHomeActivityForUser(int userId) {
            synchronized (mGlobalLock) {
+3 −11
Original line number Diff line number Diff line
@@ -685,7 +685,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
    /** All tokens used to put activities on this root task to sleep (including mOffToken) */
    final ArrayList<RootWindowContainer.SleepToken> mAllSleepTokens = new ArrayList<>();
    /** The token acquirer to put root tasks on the display to sleep */
    private final ActivityTaskManagerService.SleepTokenAcquirer mOffTokenAcquirer;
    private final ActivityTaskManagerInternal.SleepTokenAcquirer mOffTokenAcquirer;

    private boolean mSleeping;

@@ -5544,14 +5544,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        return mMetricsLogger;
    }

    void acquireScreenOffToken(boolean acquire) {
        if (acquire) {
            mOffTokenAcquirer.acquire(mDisplayId);
        } else {
            mOffTokenAcquirer.release(mDisplayId);
        }
    }

    void onDisplayChanged() {
        mDisplay.getRealSize(mTmpDisplaySize);
        setBounds(0, 0, mTmpDisplaySize.x, mTmpDisplaySize.y);
@@ -5562,9 +5554,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        if (displayId != DEFAULT_DISPLAY) {
            final int displayState = mDisplay.getState();
            if (displayState == Display.STATE_OFF) {
                acquireScreenOffToken(true /* acquire */);
                mOffTokenAcquirer.acquire(mDisplayId);
            } else if (displayState == Display.STATE_ON) {
                acquireScreenOffToken(false /* acquire */);
                mOffTokenAcquirer.release(mDisplayId);
            }
            ProtoLog.v(WM_DEBUG_LAYER_MIRRORING,
                    "Display %d state is now (%d), so update layer mirroring?",
+0 −4
Original line number Diff line number Diff line
@@ -778,10 +778,6 @@ public class DisplayPolicy {

    public void setAwake(boolean awake) {
        mAwake = awake;
        // The screen off token for non-default display is controlled by DisplayContent.
        if (mDisplayContent.isDefaultDisplay) {
            mDisplayContent.acquireScreenOffToken(!awake);
        }
    }

    public boolean isAwake() {
Loading