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

Commit c1df8667 authored by Lucas Dupin's avatar Lucas Dupin Committed by Android (Google) Code Review
Browse files

Merge "Expose blurs to SurfaceControl"

parents 8aa39acf 991415e7
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -128,6 +128,8 @@ public final class SurfaceControl implements Parcelable {
            int l, int t, int r, int b);
    private static native void nativeSetCornerRadius(long transactionObj, long nativeObject,
            float cornerRadius);
    private static native void nativeSetBackgroundBlurRadius(long transactionObj, long nativeObject,
            int blurRadius);
    private static native void nativeSetLayerStack(long transactionObj, long nativeObject,
            int layerStack);

@@ -2504,6 +2506,20 @@ public final class SurfaceControl implements Parcelable {
            return this;
        }

        /**
         * Sets the background blur radius of the {@link SurfaceControl}.
         *
         * @param sc SurfaceControl.
         * @param radius Blur radius in pixels.
         * @return itself.
         * @hide
         */
        public Transaction setBackgroundBlurRadius(SurfaceControl sc, int radius) {
            checkPreconditions(sc);
            nativeSetBackgroundBlurRadius(mNativeObject, sc.mNativeObject, radius);
            return this;
        }

        /**
         * @hide
         */
+10 −0
Original line number Diff line number Diff line
@@ -560,6 +560,14 @@ static void nativeSetCornerRadius(JNIEnv* env, jclass clazz, jlong transactionOb
    transaction->setCornerRadius(ctrl, cornerRadius);
}

static void nativeSetBackgroundBlurRadius(JNIEnv* env, jclass clazz, jlong transactionObj,
         jlong nativeObject, jint blurRadius) {
    auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);

    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
    transaction->setBackgroundBlurRadius(ctrl, blurRadius);
}

static void nativeSetLayerStack(JNIEnv* env, jclass clazz, jlong transactionObj,
        jlong nativeObject, jint layerStack) {
    auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);
@@ -1369,6 +1377,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = {
            (void*)nativeSetWindowCrop },
    {"nativeSetCornerRadius", "(JJF)V",
            (void*)nativeSetCornerRadius },
    {"nativeSetBackgroundBlurRadius", "(JJI)V",
            (void*)nativeSetBackgroundBlurRadius },
    {"nativeSetLayerStack", "(JJI)V",
            (void*)nativeSetLayerStack },
    {"nativeSetShadowRadius", "(JJF)V",
+4 −0
Original line number Diff line number Diff line
@@ -1086,6 +1086,10 @@
    <dimen name="logout_button_margin_bottom">12dp</dimen>
    <dimen name="logout_button_corner_radius">2dp</dimen>

    <!--  Blur radius on status bar window and power menu  -->
    <dimen name="min_window_blur_radius">1px</dimen>
    <dimen name="max_window_blur_radius">100px</dimen>

    <!-- How much into a DisplayCutout's bounds we can go, on each side -->
    <dimen name="display_cutout_margin_consumption">0px</dimen>
    <!-- How much each bubble is elevated. -->
+15 −0
Original line number Diff line number Diff line
@@ -19,17 +19,22 @@ package com.android.systemui.dagger;
import android.annotation.Nullable;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;

import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.BootCompleteCache;
import com.android.systemui.BootCompleteCacheImpl;
import com.android.systemui.DumpController;
import com.android.systemui.assist.AssistModule;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.model.SysUiState;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.recents.Recents;
import com.android.systemui.stackdivider.Divider;
import com.android.systemui.statusbar.BlurUtils;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.StatusBarWindowBlurController;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder;
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
import com.android.systemui.statusbar.notification.people.PeopleHubModule;
@@ -82,6 +87,16 @@ public abstract class SystemUIModule {
                keyguardUpdateMonitor, dumpController);
    }

    @Singleton
    @Provides
    @Nullable
    static StatusBarWindowBlurController providesBlurController(BlurUtils blurUtils,
            @Main Resources resources, SysuiStatusBarStateController statusBarStateController,
            DumpController dumpController) {
        return blurUtils.supportsBlursOnWindows() ? new StatusBarWindowBlurController(resources,
                statusBarStateController, blurUtils, dumpController) : null;
    }

    /** */
    @Binds
    public abstract NotificationRowBinder bindNotificationRowBinder(
+33 −13
Original line number Diff line number Diff line
@@ -98,6 +98,7 @@ import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
import com.android.systemui.plugins.GlobalActionsPanelPlugin;
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
import com.android.systemui.statusbar.BlurUtils;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -157,6 +158,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
    private final IActivityManager mIActivityManager;
    private final TelecomManager mTelecomManager;
    private final MetricsLogger mMetricsLogger;
    private final BlurUtils mBlurUtils;

    private ArrayList<Action> mItems;
    private ActionsDialog mDialog;
@@ -177,6 +179,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
    private final ScreenshotHelper mScreenshotHelper;
    private final ScreenRecordHelper mScreenRecordHelper;
    private final ActivityStarter mActivityStarter;
    private final SysuiColorExtractor mSysuiColorExtractor;
    private final IStatusBarService mStatusBarService;
    private final NotificationShadeWindowController mNotificationShadeWindowController;
    private GlobalActionsPanelPlugin mPanelPlugin;

    /**
@@ -192,7 +197,10 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
            ConfigurationController configurationController, ActivityStarter activityStarter,
            KeyguardStateController keyguardStateController, UserManager userManager,
            TrustManager trustManager, IActivityManager iActivityManager,
            TelecomManager telecomManager, MetricsLogger metricsLogger) {
            TelecomManager telecomManager, MetricsLogger metricsLogger,
            BlurUtils blurUtils, SysuiColorExtractor colorExtractor,
            IStatusBarService statusBarService,
            NotificationShadeWindowController notificationShadeWindowController) {
        mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme);
        mWindowManagerFuncs = windowManagerFuncs;
        mAudioManager = audioManager;
@@ -208,6 +216,10 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
        mIActivityManager = iActivityManager;
        mTelecomManager = telecomManager;
        mMetricsLogger = metricsLogger;
        mBlurUtils = blurUtils;
        mSysuiColorExtractor = colorExtractor;
        mStatusBarService = statusBarService;
        mNotificationShadeWindowController = notificationShadeWindowController;

        // receive broadcasts
        IntentFilter filter = new IntentFilter();
@@ -443,8 +455,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
                                mKeyguardManager.isDeviceLocked())
                        : null;

        ActionsDialog dialog = new ActionsDialog(
                mContext, mAdapter, panelViewController, isControlsEnabled(mContext));
        ActionsDialog dialog = new ActionsDialog(mContext, mAdapter, panelViewController,
                mBlurUtils, mSysuiColorExtractor, mStatusBarService,
                mNotificationShadeWindowController, isControlsEnabled(mContext));
        dialog.setCanceledOnTouchOutside(false); // Handled by the custom class.
        dialog.setKeyguardShowing(mKeyguardShowing);

@@ -1529,18 +1542,21 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
        private ResetOrientationData mResetOrientationData;
        private boolean mHadTopUi;
        private final NotificationShadeWindowController mNotificationShadeWindowController;
        private boolean mControlsEnabled;
        private final BlurUtils mBlurUtils;
        private final boolean mControlsEnabled;

        ActionsDialog(Context context, MyAdapter adapter,
                GlobalActionsPanelPlugin.PanelViewController plugin,
                GlobalActionsPanelPlugin.PanelViewController plugin, BlurUtils blurUtils,
                SysuiColorExtractor sysuiColorExtractor, IStatusBarService statusBarService,
                NotificationShadeWindowController notificationShadeWindowController,
                boolean controlsEnabled) {
            super(context, com.android.systemui.R.style.Theme_SystemUI_Dialog_GlobalActions);
            mContext = context;
            mAdapter = adapter;
            mColorExtractor = Dependency.get(SysuiColorExtractor.class);
            mStatusBarService = Dependency.get(IStatusBarService.class);
            mNotificationShadeWindowController =
                    Dependency.get(NotificationShadeWindowController.class);
            mBlurUtils = blurUtils;
            mColorExtractor = sysuiColorExtractor;
            mStatusBarService = statusBarService;
            mNotificationShadeWindowController = notificationShadeWindowController;
            mControlsEnabled = controlsEnabled;

            // Window initialization
@@ -1735,9 +1751,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
                    .setDuration(300)
                    .setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
                    .setUpdateListener(animation -> {
                        int alpha = (int) ((Float) animation.getAnimatedValue()
                                * mScrimAlpha * 255);
                        float animatedValue = animation.getAnimatedFraction();
                        int alpha = (int) (animatedValue * mScrimAlpha * 255);
                        mBackgroundDrawable.setAlpha(alpha);
                        mBlurUtils.applyBlur(mGlobalActionsLayout.getViewRootImpl(),
                                mBlurUtils.radiusForRatio(animatedValue));
                    })
                    .start();
        }
@@ -1759,9 +1777,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
                    .withEndAction(this::completeDismiss)
                    .setInterpolator(new LogAccelerateInterpolator())
                    .setUpdateListener(animation -> {
                        int alpha = (int) ((1f - (Float) animation.getAnimatedValue())
                                * mScrimAlpha * 255);
                        float animatedValue = 1f - animation.getAnimatedFraction();
                        int alpha = (int) (animatedValue * mScrimAlpha * 255);
                        mBackgroundDrawable.setAlpha(alpha);
                        mBlurUtils.applyBlur(mGlobalActionsLayout.getViewRootImpl(),
                                mBlurUtils.radiusForRatio(animatedValue));
                    })
                    .start();
            dismissPanel();
Loading