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

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

Merge "Fix wallpaper exposure bugs." into jb-dev

parents a3b67289 0afddcb7
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -85,6 +85,15 @@ public class WindowAnimator {
        mPolicy = policy;
        mPolicy = policy;
    }
    }


    void hideWallpapersLocked() {
        for (final WindowToken token : mService.mWallpaperTokens) {
            for (final WindowState wallpaper : token.windows) {
                wallpaper.mWinAnimator.hide();
            }
            token.hidden = true;
        }
    }

    private void testWallpaperAndBackgroundLocked() {
    private void testWallpaperAndBackgroundLocked() {
        if (mWindowDetachedWallpaper != mDetachedWallpaper) {
        if (mWindowDetachedWallpaper != mDetachedWallpaper) {
            if (WindowManagerService.DEBUG_WALLPAPER) Slog.v(TAG,
            if (WindowManagerService.DEBUG_WALLPAPER) Slog.v(TAG,
+5 −2
Original line number Original line Diff line number Diff line
@@ -3825,7 +3825,8 @@ public class WindowManagerService extends IWindowManager.Stub
        synchronized(mWindowMap) {
        synchronized(mWindowMap) {
            if (DEBUG_APP_TRANSITIONS) Slog.v(
            if (DEBUG_APP_TRANSITIONS) Slog.v(
                    TAG, "Prepare app transition: transit=" + transit
                    TAG, "Prepare app transition: transit=" + transit
                    + " mNextAppTransition=" + mNextAppTransition);
                    + " mNextAppTransition=" + mNextAppTransition
                    + "\nCallers=" + Debug.getCallers(3));
            if (okToDisplay()) {
            if (okToDisplay()) {
                if (mNextAppTransition == WindowManagerPolicy.TRANSIT_UNSET
                if (mNextAppTransition == WindowManagerPolicy.TRANSIT_UNSET
                        || mNextAppTransition == WindowManagerPolicy.TRANSIT_NONE) {
                        || mNextAppTransition == WindowManagerPolicy.TRANSIT_NONE) {
@@ -4237,7 +4238,7 @@ public class WindowManagerService extends IWindowManager.Stub
                    e = new RuntimeException();
                    e = new RuntimeException();
                    e.fillInStackTrace();
                    e.fillInStackTrace();
                }
                }
                Slog.v(TAG, "setAppVisibility(" + token + ", " + visible
                Slog.v(TAG, "setAppVisibility(" + token + ", visible=" + visible
                        + "): mNextAppTransition=" + mNextAppTransition
                        + "): mNextAppTransition=" + mNextAppTransition
                        + " hidden=" + wtoken.hidden
                        + " hidden=" + wtoken.hidden
                        + " hiddenRequested=" + wtoken.hiddenRequested, e);
                        + " hiddenRequested=" + wtoken.hiddenRequested, e);
@@ -7866,8 +7867,10 @@ public class WindowManagerService extends IWindowManager.Stub
                mToTopApps.clear();
                mToTopApps.clear();
            }
            }


            // if wallpaper is animating in or out set oldWallpaper to null else to wallpaper
            WindowState oldWallpaper =
            WindowState oldWallpaper =
                    mWallpaperTarget != null && mWallpaperTarget.mWinAnimator.isAnimating()
                    mWallpaperTarget != null && mWallpaperTarget.mWinAnimator.isAnimating()
                        && !mWallpaperTarget.mWinAnimator.isDummyAnimation()
                    ? null : mWallpaperTarget;
                    ? null : mWallpaperTarget;


            adjustWallpaperWindowsLocked();
            adjustWallpaperWindowsLocked();
+29 −21
Original line number Original line Diff line number Diff line
@@ -177,6 +177,13 @@ class WindowStateAnimator {
                                || atoken.inPendingTransaction));
                                || atoken.inPendingTransaction));
    }
    }


    /** Is the window animating the DummyAnimation? */
    boolean isDummyAnimation() {
        final AppWindowToken atoken = mWin.mAppToken;
        return atoken != null
                && atoken.mAppAnimator.animation == AppWindowAnimator.sDummyAnimation;
    }

    /** Is this window currently animating? */
    /** Is this window currently animating? */
    boolean isWindowAnimating() {
    boolean isWindowAnimating() {
        return mAnimation != null;
        return mAnimation != null;
@@ -363,18 +370,32 @@ class WindowStateAnimator {
            mWin.mDestroying = true;
            mWin.mDestroying = true;
            if (WindowState.SHOW_TRANSACTIONS) WindowManagerService.logSurface(
            if (WindowState.SHOW_TRANSACTIONS) WindowManagerService.logSurface(
                mWin, "HIDE (finishExit)", null);
                mWin, "HIDE (finishExit)", null);
            hide();
        }
        mWin.mExiting = false;
        if (mWin.mRemoveOnExit) {
            mService.mPendingRemove.add(mWin);
            mWin.mRemoveOnExit = false;
        }
        if (mService.mWallpaperTarget == mWin) {
            mAnimator.hideWallpapersLocked();
        }
    }

    void hide() {
        if (!mLastHidden) {
            //dump();
            mLastHidden = true;
            if (WindowManagerService.SHOW_TRANSACTIONS) WindowManagerService.logSurface(mWin,
                    "HIDE (performLayout)", null);
            if (mSurface != null) {
                mSurfaceShown = false;
                mSurfaceShown = false;
                try {
                try {
                    mSurface.hide();
                    mSurface.hide();
                } catch (RuntimeException e) {
                } catch (RuntimeException e) {
                Slog.w(TAG, "Error hiding surface in " + this, e);
                    Slog.w(TAG, "Exception hiding surface in " + mWin);
                }
                }
            mLastHidden = true;
            }
            }
        mWin.mExiting = false;
        if (mWin.mRemoveOnExit) {
            mService.mPendingRemove.add(mWin);
            mWin.mRemoveOnExit = false;
        }
        }
    }
    }


@@ -987,20 +1008,7 @@ class WindowStateAnimator {
        setSurfaceBoundaries(recoveringMemory);
        setSurfaceBoundaries(recoveringMemory);


        if (w.mAttachedHidden || !w.isReadyForDisplay()) {
        if (w.mAttachedHidden || !w.isReadyForDisplay()) {
            if (!mLastHidden) {
            hide();
                //dump();
                mLastHidden = true;
                if (WindowManagerService.SHOW_TRANSACTIONS) WindowManagerService.logSurface(w,
                        "HIDE (performLayout)", null);
                if (mSurface != null) {
                    mSurfaceShown = false;
                    try {
                        mSurface.hide();
                    } catch (RuntimeException e) {
                        Slog.w(TAG, "Exception hiding surface in " + w);
                    }
                }
            }
            // If we are waiting for this window to handle an
            // If we are waiting for this window to handle an
            // orientation change, well, it is hidden, so
            // orientation change, well, it is hidden, so
            // doesn't really matter.  Note that this does
            // doesn't really matter.  Note that this does