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

Commit 391f3727 authored by Hongwei Wang's avatar Hongwei Wang
Browse files

Ignore ui mode change caused by Morris overlay in PiP

When entering PiP from GMM with Morris overlay enabled, there will be a
display change callback caused by ui mode change that tend to shift the
PiP window. For PiP, such ui mode change from app is not quite relevant
and we can simply ignore in PipController.

Bug: 201589034
Video: http://recall/-/aaaaaabFQoRHlzixHdtY/dmI3KCeKPAH118BRqnhgNO
Test: enter PiP from GMM with Morris overlay, see video
Change-Id: I2d72e166fb8de1e503415b5441c03f0685de9573
parent 4ad4975b
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -93,6 +93,19 @@ public class DisplayLayout {
    private boolean mReverseDefaultRotation = false;
    private boolean mReverseDefaultRotation = false;
    private InsetsState mInsetsState = new InsetsState();
    private InsetsState mInsetsState = new InsetsState();


    /**
     * Different from {@link #equals(Object)}, this method compares the basic geometry properties
     * of two {@link DisplayLayout} objects including width, height, rotation, density and cutout.
     * @return {@code true} if the given {@link DisplayLayout} is identical geometry wise.
     */
    public boolean isSameGeometry(@NonNull DisplayLayout other) {
        return mWidth == other.mWidth
                && mHeight == other.mHeight
                && mRotation == other.mRotation
                && mDensityDpi == other.mDensityDpi
                && Objects.equals(mCutout, other.mCutout);
    }

    @Override
    @Override
    public boolean equals(Object o) {
    public boolean equals(Object o) {
        if (this == o) return true;
        if (this == o) return true;
+1 −2
Original line number Original line Diff line number Diff line
@@ -88,7 +88,6 @@ import com.android.wm.shell.pip.PipUtils;
import com.android.wm.shell.transition.Transitions;
import com.android.wm.shell.transition.Transitions;


import java.io.PrintWriter;
import java.io.PrintWriter;
import java.util.Objects;
import java.util.Optional;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Consumer;


@@ -469,7 +468,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
    }
    }


    private void onDisplayChanged(DisplayLayout layout, boolean saveRestoreSnapFraction) {
    private void onDisplayChanged(DisplayLayout layout, boolean saveRestoreSnapFraction) {
        if (Objects.equals(layout, mPipBoundsState.getDisplayLayout())) {
        if (mPipBoundsState.getDisplayLayout().isSameGeometry(layout)) {
            return;
            return;
        }
        }
        Runnable updateDisplayLayout = () -> {
        Runnable updateDisplayLayout = () -> {