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

Commit 9d37268b authored by Jorim Jaggi's avatar Jorim Jaggi Committed by android-build-merger
Browse files

Fix unlock transition when docked stack is visible

am: 7998e48c

* commit '7998e48c':
  Fix unlock transition when docked stack is visible
parents 2d199a7c 7998e48c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -6430,6 +6430,9 @@ public final class ActivityManagerService extends ActivityManagerNative
                if (mLockScreenShown == LOCK_SCREEN_SHOWN) {
                    mLockScreenShown = LOCK_SCREEN_HIDDEN;
                    updateSleepIfNeededLocked();
                    // Some stack visibility might change (e.g. docked stack)
                    mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
                }
            }
        } finally {
+0 −1
Original line number Diff line number Diff line
@@ -2409,7 +2409,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            case TYPE_WALLPAPER:
            case TYPE_DREAM:
            case TYPE_KEYGUARD_SCRIM:
            case TYPE_DOCK_DIVIDER:
                return false;
            default:
                // Hide only windows below the keyguard host window.
+3 −1
Original line number Diff line number Diff line
@@ -102,7 +102,9 @@ public class DockedStackDividerController implements DimLayerUser {
            return;
        }
        TaskStack stack = mDisplayContent.mService.mStackIdToStack.get(DOCKED_STACK_ID);
        final boolean visible = stack != null && stack.isVisibleLocked();

        // If the stack is invisible, we policy force hide it in WindowAnimator.shouldForceHide
        final boolean visible = stack != null;
        if (mLastVisibility == visible && !force) {
            return;
        }
+2 −1
Original line number Diff line number Diff line
@@ -898,7 +898,8 @@ public class TaskStack implements DimLayer.DimLayerUser,
    }

    boolean isVisibleLocked() {
        final boolean keyguardOn = mService.mPolicy.isKeyguardShowingOrOccluded();
        final boolean keyguardOn = mService.mPolicy.isKeyguardShowingOrOccluded()
                && !mService.mAnimator.mKeyguardGoingAway;
        if (keyguardOn && !StackId.isAllowedOverLockscreen(mStackId)) {
            // The keyguard is showing and the stack shouldn't show on top of the keyguard.
            return false;
+5 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_SYSTEM_ERROR;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEYGUARD;
@@ -231,7 +232,10 @@ public class WindowAnimator {
        // Only hide windows if the keyguard is active and not animating away.
        boolean keyguardOn = mPolicy.isKeyguardShowingOrOccluded()
                && mForceHiding != KEYGUARD_ANIMATING_OUT;
        return keyguardOn && !allowWhenLocked && (win.getDisplayId() == Display.DEFAULT_DISPLAY);
        boolean hideDockDivider = win.mAttrs.type == TYPE_DOCK_DIVIDER
                && win.getDisplayContent().getDockedStackLocked() == null;
        return keyguardOn && !allowWhenLocked && (win.getDisplayId() == Display.DEFAULT_DISPLAY)
                || hideDockDivider;
    }

    private void updateWindowsLocked(final int displayId) {