am 47adf865: Merge "Fix exposing wallpaper on rotations and other." into jb-dev
* commit '47adf865bddf6c81051d457e04785408d2710f60': Fix exposing wallpaper on rotations and other.
This commit is contained in:
@@ -85,12 +85,19 @@ public class WindowAnimator {
|
|||||||
mPolicy = policy;
|
mPolicy = policy;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hideWallpapersLocked() {
|
void hideWallpapersLocked(final WindowState w) {
|
||||||
for (final WindowToken token : mService.mWallpaperTokens) {
|
if ((mService.mWallpaperTarget == w && mService.mLowerWallpaperTarget == null)
|
||||||
for (final WindowState wallpaper : token.windows) {
|
|| mService.mWallpaperTarget == null) {
|
||||||
wallpaper.mWinAnimator.hide();
|
for (final WindowToken token : mService.mWallpaperTokens) {
|
||||||
|
for (final WindowState wallpaper : token.windows) {
|
||||||
|
final WindowStateAnimator winAnimator = wallpaper.mWinAnimator;
|
||||||
|
if (!winAnimator.mLastHidden) {
|
||||||
|
winAnimator.hide();
|
||||||
|
mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
token.hidden = true;
|
||||||
}
|
}
|
||||||
token.hidden = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -491,6 +498,10 @@ public class WindowAnimator {
|
|||||||
for (int i = 0; i < N; i++) {
|
for (int i = 0; i < N; i++) {
|
||||||
final WindowStateAnimator winAnimator = mWinAnimators.get(i);
|
final WindowStateAnimator winAnimator = mWinAnimators.get(i);
|
||||||
if (winAnimator.mWin.mIsWallpaper && mService.mWallpaperTarget == null) {
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
winAnimator.prepareSurfaceLocked(true);
|
winAnimator.prepareSurfaceLocked(true);
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import android.graphics.PointF;
|
|||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.Region;
|
import android.graphics.Region;
|
||||||
import android.os.Debug;
|
import android.os.Debug;
|
||||||
import android.os.RemoteException;
|
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import android.view.SurfaceSession;
|
import android.view.SurfaceSession;
|
||||||
@@ -379,10 +378,7 @@ class WindowStateAnimator {
|
|||||||
mService.mPendingRemove.add(mWin);
|
mService.mPendingRemove.add(mWin);
|
||||||
mWin.mRemoveOnExit = false;
|
mWin.mRemoveOnExit = false;
|
||||||
}
|
}
|
||||||
if (mService.mWallpaperTarget == mWin && mService.mLowerWallpaperTarget == null) {
|
mAnimator.hideWallpapersLocked(mWin);
|
||||||
mAnimator.hideWallpapersLocked();
|
|
||||||
mAnimator.mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void hide() {
|
void hide() {
|
||||||
@@ -738,6 +734,7 @@ class WindowStateAnimator {
|
|||||||
}
|
}
|
||||||
mSurface.destroy();
|
mSurface.destroy();
|
||||||
}
|
}
|
||||||
|
mAnimator.hideWallpapersLocked(mWin);
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
Slog.w(TAG, "Exception thrown when destroying Window " + this
|
Slog.w(TAG, "Exception thrown when destroying Window " + this
|
||||||
+ " surface " + mSurface + " session " + mSession
|
+ " surface " + mSurface + " session " + mSession
|
||||||
@@ -763,6 +760,7 @@ class WindowStateAnimator {
|
|||||||
WindowManagerService.logSurface(mWin, "DESTROY PENDING", e);
|
WindowManagerService.logSurface(mWin, "DESTROY PENDING", e);
|
||||||
}
|
}
|
||||||
mPendingDestroySurface.destroy();
|
mPendingDestroySurface.destroy();
|
||||||
|
mAnimator.hideWallpapersLocked(mWin);
|
||||||
}
|
}
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
Slog.w(TAG, "Exception thrown when destroying Window "
|
Slog.w(TAG, "Exception thrown when destroying Window "
|
||||||
@@ -1067,11 +1065,8 @@ class WindowStateAnimator {
|
|||||||
|
|
||||||
if (w.mAttachedHidden || !w.isReadyForDisplay()) {
|
if (w.mAttachedHidden || !w.isReadyForDisplay()) {
|
||||||
hide();
|
hide();
|
||||||
// TODO: Consider moving the following into hide() and out of finishExit() as well.
|
mAnimator.hideWallpapersLocked(w);
|
||||||
if (mService.mWallpaperTarget == mWin && mService.mLowerWallpaperTarget == null) {
|
|
||||||
mAnimator.hideWallpapersLocked();
|
|
||||||
mAnimator.mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
|
|
||||||
}
|
|
||||||
// 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
|
||||||
|
|||||||
Reference in New Issue
Block a user