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

Commit b1ffb795 authored by Hongwei Wang's avatar Hongwei Wang
Browse files

Do not set shadow when leaving PiP mode

Regression from ag/17456722 that setting the shadow radius when leaving
away from PiP would result in screen dimming.

Change to apply shadow radius when entering / moving / resizing PiP only

Bug: 227607130
Test: follow the reproduce steps in bug
Change-Id: Ie4d4dba94a1c66da52825798df60ebf3f971aa32
parent b68626be
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -432,6 +432,11 @@ public class PipAnimationController {
            return !isOutPipDirection(mTransitionDirection);
        }

        boolean shouldApplyShadowRadius() {
            return !isOutPipDirection(mTransitionDirection)
                    && !isRemovePipDirection(mTransitionDirection);
        }

        boolean inScaleTransition() {
            if (mAnimationType != ANIM_TYPE_BOUNDS) return false;
            final int direction = getTransitionDirection();
@@ -483,7 +488,7 @@ public class PipAnimationController {
                    setCurrentValue(alpha);
                    getSurfaceTransactionHelper().alpha(tx, leash, alpha)
                            .round(tx, leash, shouldApplyCornerRadius())
                            .shadow(tx, leash);
                            .shadow(tx, leash, shouldApplyShadowRadius());
                    tx.apply();
                }

@@ -497,7 +502,7 @@ public class PipAnimationController {
                            .resetScale(tx, leash, getDestinationBounds())
                            .crop(tx, leash, getDestinationBounds())
                            .round(tx, leash, shouldApplyCornerRadius())
                            .shadow(tx, leash);
                            .shadow(tx, leash, shouldApplyShadowRadius());
                    tx.show(leash);
                    tx.apply();
                }
@@ -585,7 +590,7 @@ public class PipAnimationController {
                            getSurfaceTransactionHelper().crop(tx, leash, base)
                                    .scale(tx, leash, base, bounds, angle)
                                    .round(tx, leash, base, bounds)
                                    .shadow(tx, leash);
                                    .shadow(tx, leash, shouldApplyShadowRadius());
                        }
                    } else {
                        final Rect insets = computeInsets(fraction);
@@ -596,7 +601,7 @@ public class PipAnimationController {
                            sourceBounds.inset(insets);
                            getSurfaceTransactionHelper()
                                    .round(tx, leash, sourceBounds, bounds)
                                    .shadow(tx, leash);
                                    .shadow(tx, leash, shouldApplyShadowRadius());
                        }
                    }
                    if (!handlePipTransaction(leash, tx, bounds)) {
@@ -649,7 +654,7 @@ public class PipAnimationController {
                    if (shouldApplyCornerRadius()) {
                        getSurfaceTransactionHelper()
                                .round(tx, leash, sourceBounds, bounds)
                                .shadow(tx, leash);
                                .shadow(tx, leash, shouldApplyShadowRadius());
                    }
                    tx.apply();
                }
@@ -668,7 +673,7 @@ public class PipAnimationController {
                    getSurfaceTransactionHelper()
                            .alpha(tx, leash, 1f)
                            .round(tx, leash, shouldApplyCornerRadius())
                            .shadow(tx, leash);
                            .shadow(tx, leash, shouldApplyShadowRadius());
                    // TODO(b/178632364): this is a work around for the black background when
                    // entering PiP in buttion navigation mode.
                    if (isInPipDirection(direction)) {
+3 −2
Original line number Diff line number Diff line
@@ -206,8 +206,9 @@ public class PipSurfaceTransactionHelper {
     * Operates the shadow radius on a given transaction and leash
     * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
     */
    public PipSurfaceTransactionHelper shadow(SurfaceControl.Transaction tx, SurfaceControl leash) {
        tx.setShadowRadius(leash, mShadowRadius);
    public PipSurfaceTransactionHelper shadow(SurfaceControl.Transaction tx, SurfaceControl leash,
            boolean applyShadowRadius) {
        tx.setShadowRadius(leash, applyShadowRadius ? mShadowRadius : 0);
        return this;
    }