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

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

Merge "Fix exposing wallpaper on rotations and other." into jb-dev

parents 0f6471ac b9836b91
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -85,14 +85,21 @@ public class WindowAnimator {
        mPolicy = policy;
    }

    void hideWallpapersLocked() {
    void hideWallpapersLocked(final WindowState w) {
        if ((mService.mWallpaperTarget == w && mService.mLowerWallpaperTarget == null)
                || mService.mWallpaperTarget == null) {
            for (final WindowToken token : mService.mWallpaperTokens) {
                for (final WindowState wallpaper : token.windows) {
                wallpaper.mWinAnimator.hide();
                    final WindowStateAnimator winAnimator = wallpaper.mWinAnimator;
                    if (!winAnimator.mLastHidden) {
                        winAnimator.hide();
                        mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
                    }
                }
                token.hidden = true;
            }
        }
    }

    private void testWallpaperAndBackgroundLocked() {
        if (mWindowDetachedWallpaper != mDetachedWallpaper) {
@@ -491,6 +498,10 @@ public class WindowAnimator {
            for (int i = 0; i < N; i++) {
                final WindowStateAnimator winAnimator = mWinAnimators.get(i);
                if (winAnimator.mWin.mIsWallpaper && mService.mWallpaperTarget == null) {
                    if (!winAnimator.mWin.mWallpaperVisible && !winAnimator.mLastHidden) {
                        // Wallpaper is no longer visible and there is no wp target => hide it.
                        winAnimator.hide();
                    }
                    continue;
                }
                winAnimator.prepareSurfaceLocked(true);
+5 −10
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@ import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.Region;
import android.os.Debug;
import android.os.RemoteException;
import android.util.Slog;
import android.view.Surface;
import android.view.SurfaceSession;
@@ -379,10 +378,7 @@ class WindowStateAnimator {
            mService.mPendingRemove.add(mWin);
            mWin.mRemoveOnExit = false;
        }
        if (mService.mWallpaperTarget == mWin && mService.mLowerWallpaperTarget == null) {
            mAnimator.hideWallpapersLocked();
            mAnimator.mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
        }
        mAnimator.hideWallpapersLocked(mWin);
    }

    void hide() {
@@ -738,6 +734,7 @@ class WindowStateAnimator {
                    }
                    mSurface.destroy();
                }
                mAnimator.hideWallpapersLocked(mWin);
            } catch (RuntimeException e) {
                Slog.w(TAG, "Exception thrown when destroying Window " + this
                    + " surface " + mSurface + " session " + mSession
@@ -763,6 +760,7 @@ class WindowStateAnimator {
                    WindowManagerService.logSurface(mWin, "DESTROY PENDING", e);
                }
                mPendingDestroySurface.destroy();
                mAnimator.hideWallpapersLocked(mWin);
            }
        } catch (RuntimeException e) {
            Slog.w(TAG, "Exception thrown when destroying Window "
@@ -1067,11 +1065,8 @@ class WindowStateAnimator {

        if (w.mAttachedHidden || !w.isReadyForDisplay()) {
            hide();
            // TODO: Consider moving the following into hide() and out of finishExit() as well.
            if (mService.mWallpaperTarget == mWin && mService.mLowerWallpaperTarget == null) {
                mAnimator.hideWallpapersLocked();
                mAnimator.mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
            }
            mAnimator.hideWallpapersLocked(w);

            // If we are waiting for this window to handle an
            // orientation change, well, it is hidden, so
            // doesn't really matter.  Note that this does