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

Commit 0655026e authored by Hongwei Wang's avatar Hongwei Wang Committed by Automerger Merge Worker
Browse files

Merge "Unify round corner radius in PipSurfaceTransactionHelper(s)" into sc-dev am: 57618b94

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14344122

Change-Id: Id2e9d2e614e3e7d9b5dda44f46ce8f01a79f23ca
parents 37960dd0 57618b94
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -33,9 +33,6 @@
    <!-- Allow PIP to resize via dragging the corner of PiP. -->
    <bool name="config_pipEnableDragCornerResize">false</bool>

    <!-- Allow PIP to enable round corner, see also R.dimen.pip_corner_radius -->
    <bool name="config_pipEnableRoundCorner">false</bool>

    <!-- Animation duration when using long press on recents to dock -->
    <integer name="long_press_dock_anim_duration">250</integer>

+8 −0
Original line number Diff line number Diff line
@@ -24,4 +24,12 @@ oneway interface IPipAnimationListener {
     * Notifies the listener that the Pip animation is started.
     */
    void onPipAnimationStarted();

    /**
     * Notifies the listener about PiP round corner radius changes.
     * Listener can expect an immediate callback the first time they attach.
     *
     * @param cornerRadius the pixel value of the corner radius, zero means it's disabled.
     */
    void onPipCornerRadiusChanged(int cornerRadius);
}
+6 −17
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.wm.shell.pip;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.RectF;
@@ -30,10 +29,6 @@ import com.android.wm.shell.R;
 * Abstracts the common operations on {@link SurfaceControl.Transaction} for PiP transition.
 */
public class PipSurfaceTransactionHelper {

    private final boolean mEnableCornerRadius;
    private int mCornerRadius;

    /** for {@link #scale(SurfaceControl.Transaction, SurfaceControl, Rect, Rect)} operation */
    private final Matrix mTmpTransform = new Matrix();
    private final float[] mTmpFloat9 = new float[9];
@@ -41,11 +36,7 @@ public class PipSurfaceTransactionHelper {
    private final RectF mTmpDestinationRectF = new RectF();
    private final Rect mTmpDestinationRect = new Rect();

    public PipSurfaceTransactionHelper(Context context) {
        final Resources res = context.getResources();
        mEnableCornerRadius = res.getBoolean(R.bool.config_pipEnableRoundCorner)
            || SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false);
    }
    private int mCornerRadius;

    /**
     * Called when display size or font size of settings changed
@@ -53,10 +44,10 @@ public class PipSurfaceTransactionHelper {
     * @param context the current context
     */
    public void onDensityOrFontScaleChanged(Context context) {
        if (mEnableCornerRadius) {
            final Resources res = context.getResources();
            mCornerRadius = res.getDimensionPixelSize(R.dimen.pip_corner_radius);
        }
        final boolean enableCornerRadius =
                SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false);
        mCornerRadius = enableCornerRadius
                ? context.getResources().getDimensionPixelSize(R.dimen.pip_corner_radius) : 0;
    }

    /**
@@ -194,9 +185,7 @@ public class PipSurfaceTransactionHelper {
     */
    public PipSurfaceTransactionHelper round(SurfaceControl.Transaction tx, SurfaceControl leash,
            boolean applyCornerRadius) {
        if (mEnableCornerRadius) {
        tx.setCornerRadius(leash, applyCornerRadius ? mCornerRadius : 0);
        }
        return this;
    }

+18 −4
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.content.res.Configuration;
import android.graphics.Rect;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Log;
@@ -50,6 +51,7 @@ import androidx.annotation.BinderThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.wm.shell.R;
import com.android.wm.shell.WindowManagerShellWrapper;
import com.android.wm.shell.common.DisplayChangeController;
import com.android.wm.shell.common.DisplayController;
@@ -428,6 +430,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb

    private void onDensityOrFontScaleChanged() {
        mPipTaskOrganizer.onDensityOrFontScaleChanged(mContext);
        onPipCornerRadiusChanged();
    }

    private void onOverlayChanged() {
@@ -488,10 +491,6 @@ public class PipController implements PipTransitionController.PipTransitionCallb
        mTouchHandler.getMotionHelper().expandLeavePip(false /* skipAnimation */);
    }

    private PipTouchHandler getPipTouchHandler() {
        return mTouchHandler;
    }

    /**
     * Hides the PIP menu.
     */
@@ -531,6 +530,21 @@ public class PipController implements PipTransitionController.PipTransitionCallb

    private void setPinnedStackAnimationListener(IPipAnimationListener callback) {
        mPinnedStackAnimationRecentsCallback = callback;
        onPipCornerRadiusChanged();
    }

    private void onPipCornerRadiusChanged() {
        if (mPinnedStackAnimationRecentsCallback != null) {
            final boolean enableCornerRadius =
                    SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false);
            final int cornerRadius = enableCornerRadius
                    ? mContext.getResources().getDimensionPixelSize(R.dimen.pip_corner_radius) : 0;
            try {
                mPinnedStackAnimationRecentsCallback.onPipCornerRadiusChanged(cornerRadius);
            } catch (RemoteException e) {
                Log.e(TAG, "Failed to call onPipCornerRadiusChanged", e);
            }
        }
    }

    private Rect startSwipePipToHome(ComponentName componentName, ActivityInfo activityInfo,
+2 −3
Original line number Diff line number Diff line
@@ -152,9 +152,8 @@ public class PipMenuView extends FrameLayout {
        mAccessibilityManager = context.getSystemService(AccessibilityManager.class);
        inflate(context, R.layout.pip_menu, this);

        final boolean enableCornerRadius = mContext.getResources()
                .getBoolean(R.bool.config_pipEnableRoundCorner)
                || SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false);
        final boolean enableCornerRadius =
                SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false);
        mBackgroundDrawable = enableCornerRadius
                ? mContext.getDrawable(R.drawable.pip_menu_background)
                : new ColorDrawable(Color.BLACK);
Loading