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

Commit 0721bde2 authored by Craig Mautner's avatar Craig Mautner Committed by Android Git Automerger
Browse files

am 47adf865: Merge "Fix exposing wallpaper on rotations and other." into jb-dev

* commit '47adf865':
  Fix exposing wallpaper on rotations and other.
parents 6892f1ec 47adf865
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