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

Commit 13131e74 authored by Craig Mautner's avatar Craig Mautner
Browse files

Make DimLayer track changes to WindowState layer.

The DimLayer behind popups was not changing when the popup layer
changed. It will now.

Fixes bug 7974415.

Change-Id: Ia486efa83d623716a09d73a22493a4222823c573
parent 14e066df
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -84,6 +84,17 @@ public class DimLayer {
        return mTargetAlpha;
    }

    void setLayer(int layer) {
        if (mLayer != layer) {
            mLayer = layer;
            mDimSurface.setLayer(layer);
        }
    }

    int getLayer() {
        return mLayer;
    }

    private void setAlpha(float alpha) {
        if (mAlpha != alpha) {
            if (DEBUG) Slog.v(TAG, "setAlpha alpha=" + alpha);
+6 −2
Original line number Diff line number Diff line
@@ -573,10 +573,13 @@ public class WindowAnimator {

                final DimLayer dimAnimator = displayAnimator.mDimAnimator;
                final WindowStateAnimator winAnimator = displayAnimator.mDimWinAnimator;
                final int dimLayer;
                final float dimAmount;
                if (winAnimator == null) {
                    dimLayer = dimAnimator.getLayer();
                    dimAmount = 0;
                } else {
                    dimLayer = winAnimator.mAnimLayer - WindowManagerService.LAYER_OFFSET_DIM;
                    dimAmount = winAnimator.mWin.mAttrs.dimAmount;
                }
                final float targetAlpha = dimAnimator.getTargetAlpha();
@@ -590,9 +593,10 @@ public class WindowAnimator {
                        if (targetAlpha > dimAmount) {
                            duration = getDimBehindFadeDuration(duration);
                        }
                        dimAnimator.show(winAnimator.mAnimLayer -
                                WindowManagerService.LAYER_OFFSET_DIM, dimAmount, duration);
                        dimAnimator.show(dimLayer, dimAmount, duration);
                    }
                } else if (dimAnimator.getLayer() != dimLayer) {
                    dimAnimator.setLayer(dimLayer);
                }
                if (dimAnimator.isAnimating()) {
                    if (!mService.okToDisplay()) {