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

Commit 30570a99 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Picture in picture Z ordering fixes."

parents 9ba8462a b9506034
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line
@@ -1620,7 +1620,15 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree

    @Override
    public SurfaceControl getAnimationLeashParent() {
        // All normal app transitions take place in an animation layer which is below the pinned
        // stack but may be above the parent stacks of the given animating apps.
        // For transitions in the pinned stack (menu activity) we just let them occur as a child
        // of the pinned stack.
        if (!inPinnedWindowingMode()) {
            return getAppAnimationLayer();
        } else {
            return getStack().getSurfaceControl();
        }
    }

    boolean applyAnimationLocked(WindowManager.LayoutParams lp, int transit, boolean enter,
@@ -1763,10 +1771,18 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree

    @Override
    public void onAnimationLeashCreated(Transaction t, SurfaceControl leash) {

        // The leash is parented to the animation layer. We need to preserve the z-order by using
        // the prefix order index, but we boost if necessary.
        int layer = getPrefixOrderIndex();
        int layer = 0;
        if (!inPinnedWindowingMode()) {
            layer = getPrefixOrderIndex();
        } else {
            // Pinned stacks have animations take place within themselves rather than an animation
            // layer so we need to preserve the order relative to the stack (e.g. the order of our
            // task/parent).
            layer = getParent().getPrefixOrderIndex();
        }

        if (mNeedsZBoost) {
            layer += Z_BOOST_BASE;
        }
+6 −1
Original line number Diff line number Diff line
@@ -3583,7 +3583,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
                    if (s.inSplitScreenWindowingMode() && mSplitScreenDividerAnchor != null) {
                        t.setLayer(mSplitScreenDividerAnchor, layer++);
                    }
                    if (s.isSelfOrChildAnimating()) {
                    if (s.isAppAnimating() && state != ALWAYS_ON_TOP_STATE) {
                        // Ensure the animation layer ends up above the
                        // highest animating stack and no higher.
                        layerForAnimationLayer = layer++;
@@ -3632,6 +3632,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
            super(name, service);
        }

        @Override
        void assignChildLayers(SurfaceControl.Transaction t) {
            assignChildLayers(t, null /* imeContainer */);
        }

        void assignChildLayers(SurfaceControl.Transaction t, WindowContainer imeContainer) {
            boolean needAssignIme = imeContainer != null
                    && imeContainer.getSurfaceControl() != null;