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

Commit 625ac308 authored by Craig Mautner's avatar Craig Mautner Committed by Android (Google) Code Review
Browse files

Merge "Retain dimming while animating and obscured."

parents d9c9f894 312eac40
Loading
Loading
Loading
Loading
+32 −22
Original line number Diff line number Diff line
@@ -4426,6 +4426,7 @@ public class WindowManagerService extends IWindowManager.Stub
        }
    }

    @Override
    public void setAppWillBeHidden(IBinder token) {
        if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
                "setAppWillBeHidden()")) {
@@ -4549,6 +4550,7 @@ public class WindowManagerService extends IWindowManager.Stub
        return delayed;
    }

    @Override
    public void setAppVisibility(IBinder token, boolean visible) {
        if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
                "setAppVisibility()")) {
@@ -4702,6 +4704,7 @@ public class WindowManagerService extends IWindowManager.Stub
        }
    }

    @Override
    public void startAppFreezingScreen(IBinder token, int configChanges) {
        if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
                "setAppFreezingScreen()")) {
@@ -4725,6 +4728,7 @@ public class WindowManagerService extends IWindowManager.Stub
        }
    }

    @Override
    public void stopAppFreezingScreen(IBinder token, boolean force) {
        if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
                "setAppFreezingScreen()")) {
@@ -8957,12 +8961,14 @@ public class WindowManagerService extends IWindowManager.Stub
            // so we want to leave all of them as undimmed (for
            // performance reasons).
            mInnerFields.mObscured = true;
        } else if (canBeSeen && (attrFlags & FLAG_DIM_BEHIND) != 0
                && !(w.mAppToken != null && w.mAppToken.hiddenRequested)
        }
    }

    private void handleFlagDimBehind(WindowState w, int innerDw, int innerDh) {
        final WindowManager.LayoutParams attrs = w.mAttrs;
        if ((attrs.flags & FLAG_DIM_BEHIND) != 0
                && w.isDisplayedLw()
                && !w.mExiting) {
            if (localLOGV) Slog.v(TAG, "Win " + w + " obscured=" + mInnerFields.mObscured);
            if (!mInnerFields.mDimming) {
                //Slog.i(TAG, "DIM BEHIND: " + w);
            mInnerFields.mDimming = true;
            final WindowStateAnimator winAnimator = w.mWinAnimator;
            if (!mAnimator.isDimmingLocked(winAnimator)) {
@@ -8975,12 +8981,12 @@ public class WindowManagerService extends IWindowManager.Stub
                    width = innerDw;
                    height = innerDh;
                }
                if (localLOGV) Slog.v(TAG, "Win " + w + " start dimming.");
                startDimmingLocked(
                        winAnimator, w.mExiting ? 0 : w.mAttrs.dimAmount, width, height);
            }
        }
    }
    }

    private void updateAllDrawnLocked() {
        // See if any windows have been drawn, so they (and others
@@ -9156,6 +9162,10 @@ public class WindowManagerService extends IWindowManager.Stub
                        handleNotObscuredLocked(w, currentTime, innerDw, innerDh);
                    }

                    if (!mInnerFields.mDimming) {
                        handleFlagDimBehind(w, innerDw, innerDh);
                    }

                    if (isDefaultDisplay && obscuredChanged && (mWallpaperTarget == w)
                            && w.isVisibleLw()) {
                        // This is the wallpaper target and its obscured state