Merge "Make launcher opaque when scrim becomes opaque" into sc-dev
diff --git a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
index 59d0afa..e608885 100644
--- a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
+++ b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
@@ -217,17 +217,11 @@
         }
 
         if (supportsBlur) {
-            final int blur;
-            if (mLauncher.isInState(LauncherState.ALL_APPS) && mDepth == 1) {
-                // All apps has a solid background. We don't need to draw blurs after it's fully
-                // visible. This will take us out of GPU composition, saving battery and increasing
-                // performance.
-                blur = 0;
-            } else {
-                blur = (int) (mDepth * mMaxBlurRadius);
-            }
+            boolean isOpaque = mLauncher.getScrimView().isFullyOpaque();
+            int blur = isOpaque ? 0 : (int) (mDepth * mMaxBlurRadius);
             new TransactionCompat()
                     .setBackgroundBlurRadius(mSurface, blur)
+                    .setOpaque(mSurface, isOpaque)
                     .apply();
         }
     }
diff --git a/src/com/android/launcher3/views/ScrimView.java b/src/com/android/launcher3/views/ScrimView.java
index 0ba94ab..fb1485b 100644
--- a/src/com/android/launcher3/views/ScrimView.java
+++ b/src/com/android/launcher3/views/ScrimView.java
@@ -19,6 +19,7 @@
 
 import android.content.Context;
 import android.graphics.Canvas;
+import android.graphics.Color;
 import android.graphics.Rect;
 import android.graphics.drawable.ColorDrawable;
 import android.util.AttributeSet;
@@ -39,6 +40,8 @@
     private SystemUiController mSystemUiController;
 
     private ScrimDrawingController mDrawingController;
+    private int mBackgroundColor;
+    private boolean mIsVisible = true;
 
     public ScrimView(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -62,11 +65,22 @@
 
     @Override
     public void setBackgroundColor(int color) {
+        mBackgroundColor = color;
         updateSysUiColors();
         super.setBackgroundColor(color);
     }
 
     @Override
+    public void onVisibilityAggregated(boolean isVisible) {
+        super.onVisibilityAggregated(isVisible);
+        mIsVisible = isVisible;
+    }
+
+    public boolean isFullyOpaque() {
+        return mIsVisible && getAlpha() == 1 && Color.alpha(mBackgroundColor) == 255;
+    }
+
+    @Override
     protected void onDraw(Canvas canvas) {
         super.onDraw(canvas);
         if (mDrawingController != null) {