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

Commit d881a679 authored by Jacqueline Bronger's avatar Jacqueline Bronger
Browse files

Fix NPE going from PiP to Fullscreen.

Only happens when going to fullscreen when shell transitions are turned
on.

Bug: 271098548
Test: manual - make sure shell transitions are enabled, start a PiP, go
to the menu and select the fullscreen option --> app should go to
fullscreen and not just show a black screen.

Change-Id: I848b808182a0b0bae11401d74765cfd25e864d15
parent f928c832
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -276,15 +276,14 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
            Rect pipBounds) {
        ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
                "%s: resizePipMenu: %s", TAG, pipBounds.toShortString());

        if (pipBounds.isEmpty()) {
            return;
        }

        if (!isMenuReadyToMove()) {
        if (!isMenuAttached()) {
            return;
        }


        final SurfaceControl frontSurface = getSurfaceControl(mPipMenuView);
        final SurfaceControl backSurface = getSurfaceControl(mPipBackgroundView);
        final Rect menuBounds = calculateMenuSurfaceBounds(pipBounds);
@@ -321,7 +320,7 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
            }
            return;
        }
        if (!isMenuReadyToMove()) {
        if (!isMenuAttached()) {
            return;
        }

@@ -344,12 +343,12 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
        syncGroup.markSyncReady();
    }

    private boolean isMenuReadyToMove() {
    private boolean isMenuAttached() {
        final boolean ready = mPipMenuView != null && mPipMenuView.getViewRootImpl() != null
                && mPipBackgroundView != null && mPipBackgroundView.getViewRootImpl() != null;
        if (!ready) {
            ProtoLog.v(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
                    "%s: Not going to move PiP, either menu or its parent is not created.", TAG);
                    "%s: the menu surfaces are not attached.", TAG);
        }
        return ready;
    }
@@ -368,6 +367,9 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis

    @Override
    public void updateMenuBounds(Rect pipBounds) {
        if (!isMenuAttached()) {
            return;
        }
        final Rect menuBounds = calculateMenuSurfaceBounds(pipBounds);
        ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
                "%s: updateMenuBounds: %s", TAG, menuBounds.toShortString());