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

Commit 224c843a authored by Galia Peycheva's avatar Galia Peycheva Committed by Android (Google) Code Review
Browse files

Merge "Add background blur in WindowManager"

parents 91114249 f30a6ab6
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1620,6 +1620,16 @@ public final class SurfaceControl implements Parcelable {
        }
    }

    /**
     * @hide
     */
    public void setBackgroundBlurRadius(int blur) {
        checkNotReleased();
        synchronized (SurfaceControl.class) {
            sGlobalTransaction.setBackgroundBlurRadius(this, blur);
        }
    }

    /**
     * @hide
     */
+20 −0
Original line number Diff line number Diff line
@@ -2931,6 +2931,13 @@ public interface WindowManager extends ViewManager {
         */
        public boolean preferMinimalPostProcessing = false;

        /**
         * Indicates that this window wants to have blurred content behind it.
         *
         * @hide
         */
        public int backgroundBlurRadius = 0;

        /**
         * The color mode requested by this window. The target display may
         * not be able to honor the request. When the color mode is not set
@@ -3255,6 +3262,7 @@ public interface WindowManager extends ViewManager {
            out.writeInt(mFitInsetsSides);
            out.writeBoolean(mFitInsetsIgnoringVisibility);
            out.writeBoolean(preferMinimalPostProcessing);
            out.writeInt(backgroundBlurRadius);
            if (providesInsetsTypes != null) {
                out.writeInt(providesInsetsTypes.length);
                out.writeIntArray(providesInsetsTypes);
@@ -3322,6 +3330,7 @@ public interface WindowManager extends ViewManager {
            mFitInsetsSides = in.readInt();
            mFitInsetsIgnoringVisibility = in.readBoolean();
            preferMinimalPostProcessing = in.readBoolean();
            backgroundBlurRadius = in.readInt();
            int insetsTypesLength = in.readInt();
            if (insetsTypesLength > 0) {
                providesInsetsTypes = new int[insetsTypesLength];
@@ -3374,6 +3383,8 @@ public interface WindowManager extends ViewManager {
        public static final int INSET_FLAGS_CHANGED = 1 << 27;
        /** {@hide} */
        public static final int MINIMAL_POST_PROCESSING_PREFERENCE_CHANGED = 1 << 28;
        /** {@hide} */
        public static final int BACKGROUND_BLUR_RADIUS_CHANGED = 1 << 29;

        // internal buffer to backup/restore parameters under compatibility mode.
        private int[] mCompatibilityParamsBackup = null;
@@ -3559,6 +3570,11 @@ public interface WindowManager extends ViewManager {
                changes |= MINIMAL_POST_PROCESSING_PREFERENCE_CHANGED;
            }

            if (backgroundBlurRadius != o.backgroundBlurRadius) {
                backgroundBlurRadius = o.backgroundBlurRadius;
                changes |= BACKGROUND_BLUR_RADIUS_CHANGED;
            }

            // This can't change, it's only set at window creation time.
            hideTimeoutMilliseconds = o.hideTimeoutMilliseconds;

@@ -3722,6 +3738,10 @@ public interface WindowManager extends ViewManager {
                sb.append(" preferMinimalPostProcessing=");
                sb.append(preferMinimalPostProcessing);
            }
            if (backgroundBlurRadius != 0) {
                sb.append(" backgroundBlurRadius=");
                sb.append(backgroundBlurRadius);
            }
            sb.append(System.lineSeparator());
            sb.append(prefix).append("  fl=").append(
                    ViewDebug.flagsToString(LayoutParams.class, "flags", flags));
+6 −24
Original line number Diff line number Diff line
@@ -1405,12 +1405,6 @@
      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
    },
    "-444624452": {
      "message": "REPARENT from: %s to: %s",
      "level": "INFO",
      "group": "WM_SHOW_TRANSACTIONS",
      "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
    },
    "-443173857": {
      "message": "Moving pending starting from %s to %s",
      "level": "VERBOSE",
@@ -1519,12 +1513,6 @@
      "group": "WM_DEBUG_STATES",
      "at": "com\/android\/server\/wm\/Task.java"
    },
    "-324085783": {
      "message": "SURFACE CROP %s: %s",
      "level": "INFO",
      "group": "WM_SHOW_TRANSACTIONS",
      "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
    },
    "-322743468": {
      "message": "setInputMethodInputTarget %s",
      "level": "INFO",
@@ -1711,12 +1699,6 @@
      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
      "at": "com\/android\/server\/wm\/WindowContainer.java"
    },
    "-29233992": {
      "message": "SURFACE CLEAR CROP: %s",
      "level": "INFO",
      "group": "WM_SHOW_TRANSACTIONS",
      "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
    },
    "-21399771": {
      "message": "activity %s already destroying, skipping request with reason:%s",
      "level": "VERBOSE",
@@ -2677,6 +2659,12 @@
      "group": "WM_ERROR",
      "at": "com\/android\/server\/wm\/WindowManagerService.java"
    },
    "1035154109": {
      "message": "SURFACE backgroundBlur=%o: %s",
      "level": "INFO",
      "group": "WM_SHOW_TRANSACTIONS",
      "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
    },
    "1040675582": {
      "message": "Can't report activity configuration update - client not running, activityRecord=%s",
      "level": "WARN",
@@ -2809,12 +2797,6 @@
      "group": "WM_DEBUG_FOCUS",
      "at": "com\/android\/server\/wm\/WindowToken.java"
    },
    "1220075598": {
      "message": "SURFACE SIZE %dx%d: %s",
      "level": "INFO",
      "group": "WM_SHOW_TRANSACTIONS",
      "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
    },
    "1224184681": {
      "message": "No longer Stopped: %s",
      "level": "VERBOSE",
+1 −0
Original line number Diff line number Diff line
@@ -859,6 +859,7 @@ class WindowStateAnimator {

        if (displayed) {
            w.mToken.hasVisible = true;
            mSurfaceController.setBackgroundBlurRadius(w.mAttrs.backgroundBlurRadius);
        }
    }

+22 −0
Original line number Diff line number Diff line
@@ -63,6 +63,8 @@ class WindowSurfaceController {
    private float mLastDsdy = 0;
    private float mLastDtdy = 1;

    private int mLastBackgroundBlurRadius = 0;

    private float mSurfaceAlpha = 0;

    private int mSurfaceLayer = 0;
@@ -268,6 +270,26 @@ class WindowSurfaceController {
        }
    }

    void setBackgroundBlurRadius(int radius) {
        ProtoLog.i(WM_SHOW_TRANSACTIONS, "SURFACE backgroundBlur=%o: %s", radius, title);

        if (mSurfaceControl == null || radius == mLastBackgroundBlurRadius) {
            return;
        }
        mLastBackgroundBlurRadius = radius;

        if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION setBackgroundBlurRadius");
        mService.openSurfaceTransaction();
        try {
            mSurfaceControl.setBackgroundBlurRadius(radius);
        } finally {
            mService.closeSurfaceTransaction("setBackgroundBlurRadius");
            if (SHOW_LIGHT_TRANSACTIONS) {
                Slog.i(TAG, "<<< CLOSE TRANSACTION setBackgroundBlurRadius");
            }
        }
    }

    void setSecure(boolean isSecure) {
        ProtoLog.i(WM_SHOW_TRANSACTIONS, "SURFACE isSecure=%b: %s", isSecure, title);