Fixed a flashing when the affordances were launched

Because we can't draw it as source in that case.

Change-Id: I14039959a5fedbc57358e2e343a3d0d185dcec17
Fixes: 28735933
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 9dbec6d..6a37099 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -39,6 +39,7 @@
 import android.view.accessibility.AccessibilityEvent;
 import android.widget.FrameLayout;
 import android.widget.TextView;
+
 import com.android.internal.logging.MetricsLogger;
 import com.android.keyguard.KeyguardStatusView;
 import com.android.systemui.AutoReinflateContainer;
@@ -2291,6 +2292,12 @@
         setLaunchingAffordance(false);
     }
 
+    @Override
+    public void setAlpha(float alpha) {
+        super.setAlpha(alpha);
+        mNotificationStackScroller.setParentFadingOut(alpha != 1.0f);
+    }
+
     /**
      * Set whether we are currently launching an affordance. This is currently only set when
      * launched via a camera gesture.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 7364838..d0d21e3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -3864,6 +3864,7 @@
                 mScrimController.forceHideScrims(true /* hide */);
                 updateMediaMetaData(false, true);
                 mNotificationPanel.setAlpha(1);
+                mStackScroller.setParentFadingOut(true);
                 mNotificationPanel.animate()
                         .alpha(0)
                         .setStartDelay(FADE_KEYGUARD_START_DELAY)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
index ddded49..21d03fd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
@@ -53,7 +53,7 @@
 
     public void showMirror() {
         mBrightnessMirror.setVisibility(View.VISIBLE);
-        mStackScroller.setFadedOut(true);
+        mStackScroller.setFadingOut(true);
         mScrimBehind.animateViewAlpha(0.0f, TRANSITION_DURATION_OUT, Interpolators.ALPHA_OUT);
         outAnimation(mNotificationPanel.animate())
                 .withLayer();
@@ -67,7 +67,7 @@
                     @Override
                     public void run() {
                         mBrightnessMirror.setVisibility(View.INVISIBLE);
-                        mStackScroller.setFadedOut(false);
+                        mStackScroller.setFadingOut(false);
                     }
                 });
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index 8913530..7a5b242 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -333,7 +333,8 @@
     private PorterDuffXfermode mSrcMode = new PorterDuffXfermode(PorterDuff.Mode.SRC);
     private boolean mPulsing;
     private boolean mDrawBackgroundAsSrc;
-    private boolean mFadedOut;
+    private boolean mFadingOut;
+    private boolean mParentFadingOut;
     private boolean mGroupExpandedForMeasure;
     private View mForcedScroll;
     private float mBackgroundFadeAmount = 1.0f;
@@ -470,7 +471,8 @@
     }
 
     private void updateSrcDrawing() {
-        mBackgroundPaint.setXfermode(mDrawBackgroundAsSrc && !mFadedOut ? mSrcMode : null);
+        mBackgroundPaint.setXfermode(mDrawBackgroundAsSrc && (!mFadingOut && !mParentFadingOut)
+                ? mSrcMode : null);
         invalidate();
     }
 
@@ -1871,7 +1873,7 @@
     }
 
     private void applyCurrentBackgroundBounds() {
-        if (!mFadedOut) {
+        if (!mFadingOut) {
             mScrimController.setExcludedBackgroundArea(mCurrentBounds);
         }
         invalidate();
@@ -3624,22 +3626,33 @@
         updateNotificationAnimationStates();
     }
 
-    public void setFadedOut(boolean fadingOut) {
-        if (fadingOut != mFadedOut) {
-            mFadedOut = fadingOut;
-            if (fadingOut) {
-                mScrimController.setExcludedBackgroundArea(null);
-            } else {
-                applyCurrentBackgroundBounds();
-            }
-            updateSrcDrawing();
+    public void setFadingOut(boolean fadingOut) {
+        if (fadingOut != mFadingOut) {
+            mFadingOut = fadingOut;
+            updateFadingState();
         }
     }
 
+    public void setParentFadingOut(boolean fadingOut) {
+        if (fadingOut != mParentFadingOut) {
+            mParentFadingOut = fadingOut;
+            updateFadingState();
+        }
+    }
+
+    private void updateFadingState() {
+        if (mFadingOut || mParentFadingOut || mAmbientState.isDark()) {
+            mScrimController.setExcludedBackgroundArea(null);
+        } else {
+            applyCurrentBackgroundBounds();
+        }
+        updateSrcDrawing();
+    }
+
     @Override
     public void setAlpha(@FloatRange(from = 0.0, to = 1.0) float alpha) {
         super.setAlpha(alpha);
-        setFadedOut(alpha != 1.0f);
+        setFadingOut(alpha != 1.0f);
     }
 
     /**