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

Commit 47dc9fab authored by Robin Lee's avatar Robin Lee Committed by Automerger Merge Worker
Browse files

Merge "Hold onto occluded change until it's committed" into udc-dev am: e9945c0d

parents 64ec7630 e9945c0d
Loading
Loading
Loading
Loading
+11 −13
Original line number Diff line number Diff line
@@ -3557,16 +3557,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            mPendingKeyguardOccluded = occluded;
            mKeyguardOccludedChanged = true;
        } else {
            setKeyguardOccludedLw(occluded, true /* notify */);
            setKeyguardOccludedLw(occluded);
        }
    }

    @Override
    public int applyKeyguardOcclusionChange(boolean notify) {
    public int applyKeyguardOcclusionChange() {
        if (mKeyguardOccludedChanged) {
            if (DEBUG_KEYGUARD) Slog.d(TAG, "transition/occluded changed occluded="
                    + mPendingKeyguardOccluded);
            if (setKeyguardOccludedLw(mPendingKeyguardOccluded, notify)) {
            if (setKeyguardOccludedLw(mPendingKeyguardOccluded)) {
                return FINISH_LAYOUT_REDO_LAYOUT | FINISH_LAYOUT_REDO_WALLPAPER;
            }
        }
@@ -3585,8 +3585,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
     */
    private int handleTransitionForKeyguardLw(boolean startKeyguardExitAnimation,
            boolean notifyOccluded) {
        final int redoLayout = applyKeyguardOcclusionChange(notifyOccluded);
        if (notifyOccluded) {
            final int redoLayout = applyKeyguardOcclusionChange();
            if (redoLayout != 0) return redoLayout;
        }
        if (startKeyguardExitAnimation) {
            if (DEBUG_KEYGUARD) Slog.d(TAG, "Starting keyguard exit animation");
            startKeyguardExitAnimation(SystemClock.uptimeMillis());
@@ -3837,20 +3839,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    }

    /**
     * Updates the occluded state of the Keyguard.
     * Updates the occluded state of the Keyguard immediately via
     * {@link com.android.internal.policy.IKeyguardService}.
     *
     * @param isOccluded Whether the Keyguard is occluded by another window.
     * @param notify Notify keyguard occlude status change immediately via
     *       {@link com.android.internal.policy.IKeyguardService}.
     * @return Whether the flags have changed and we have to redo the layout.
     */
    private boolean setKeyguardOccludedLw(boolean isOccluded, boolean notify) {
    private boolean setKeyguardOccludedLw(boolean isOccluded) {
        if (DEBUG_KEYGUARD) Slog.d(TAG, "setKeyguardOccluded occluded=" + isOccluded);
        mKeyguardOccludedChanged = false;
        if (isKeyguardOccluded() == isOccluded) {
            return false;
        }
        mKeyguardDelegate.setOccluded(isOccluded, notify);
        mKeyguardDelegate.setOccluded(isOccluded, true /* notify */);
        return mKeyguardDelegate.isShowing();
    }

+3 −3
Original line number Diff line number Diff line
@@ -170,10 +170,10 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants {
    void onKeyguardOccludedChangedLw(boolean occluded, boolean waitAppTransition);

    /**
     * @param notify {@code true} if the status change should be immediately notified via
     *        {@link com.android.internal.policy.IKeyguardService}
     * Commit any queued changes to keyguard occlude status that had been deferred during the
     * start of an animation or transition.
     */
    int applyKeyguardOcclusionChange(boolean notify);
    int applyKeyguardOcclusionChange();

    /**
     * Interface to the Window Manager state associated with a particular
+3 −3
Original line number Diff line number Diff line
@@ -1481,9 +1481,9 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
            // then we have to notify KeyguardService directly. This can happen if there is
            // another ongoing transition when the app changes occlusion OR if the app dies or
            // is killed. Both of these are common during tests.
            final boolean notify = !(transit == TRANSIT_KEYGUARD_OCCLUDE
                    || transit == TRANSIT_KEYGUARD_UNOCCLUDE);
            mController.mAtm.mWindowManager.mPolicy.applyKeyguardOcclusionChange(notify);
            if (transit != TRANSIT_KEYGUARD_OCCLUDE && transit != TRANSIT_KEYGUARD_UNOCCLUDE) {
                mController.mAtm.mWindowManager.mPolicy.applyKeyguardOcclusionChange();
            }
        }
    }

+1 −1
Original line number Diff line number Diff line
@@ -314,7 +314,7 @@ class TestWindowManagerPolicy implements WindowManagerPolicy {
    }

    @Override
    public int applyKeyguardOcclusionChange(boolean notify) {
    public int applyKeyguardOcclusionChange() {
        return 0;
    }