Loading services/java/com/android/server/wm/WindowAnimator.java +29 −8 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import static com.android.server.wm.WindowManagerService.LayoutFields.SET_ORIENT import static com.android.server.wm.WindowManagerService.H.UPDATE_ANIM_PARAMETERS; import android.content.Context; import android.os.Debug; import android.os.SystemClock; import android.util.Log; import android.util.Slog; Loading Loading @@ -203,9 +204,9 @@ public class WindowAnimator { if (mWallpaperTarget != layoutToAnim.mWallpaperTarget || mLowerWallpaperTarget != layoutToAnim.mLowerWallpaperTarget || mUpperWallpaperTarget != layoutToAnim.mUpperWallpaperTarget) { Slog.d(TAG, "Updating anim wallpaper: target=" + mWallpaperTarget + " lower=" + mLowerWallpaperTarget + " upper=" + mUpperWallpaperTarget); Slog.d(TAG, "Pulling anim wallpaper: target=" + layoutToAnim.mWallpaperTarget + " lower=" + layoutToAnim.mLowerWallpaperTarget + " upper=" + layoutToAnim.mUpperWallpaperTarget); } } mWallpaperTarget = layoutToAnim.mWallpaperTarget; Loading Loading @@ -259,11 +260,30 @@ public class WindowAnimator { } } void hideWallpapersLocked(final WindowState w) { if ((mWallpaperTarget == w && mLowerWallpaperTarget == null) || mWallpaperTarget == null) { final int numTokens = mWallpaperTokens.size(); void hideWallpapersLocked(final WindowState w, boolean fromAnimator) { // There is an issue where this function can be called either from // the animation or the layout side of the window manager. The problem // is that if it is called from the layout side, we may not yet have // propagated the current layout wallpaper state over into the animation // state. If that is the case, we can do bad things like hide the // wallpaper when we had just made it shown because the animation side // doesn't yet see that there is now a wallpaper target. As a temporary // work-around, we tell the function here which side of the window manager // is calling so it can use the right state. if (fromAnimator) { hideWallpapersLocked(w, mWallpaperTarget, mLowerWallpaperTarget, mWallpaperTokens); } else { hideWallpapersLocked(w, mService.mWallpaperTarget, mService.mLowerWallpaperTarget, mService.mWallpaperTokens); } } void hideWallpapersLocked(final WindowState w, final WindowState wallpaperTarget, final WindowState lowerWallpaperTarget, final ArrayList<WindowToken> wallpaperTokens) { if ((wallpaperTarget == w && lowerWallpaperTarget == null) || wallpaperTarget == null) { final int numTokens = wallpaperTokens.size(); for (int i = numTokens - 1; i >= 0; i--) { final WindowToken token = mWallpaperTokens.get(i); final WindowToken token = wallpaperTokens.get(i); final int numWindows = token.windows.size(); for (int j = numWindows - 1; j >= 0; j--) { final WindowState wallpaper = token.windows.get(j); Loading @@ -276,7 +296,8 @@ public class WindowAnimator { } } if (WindowManagerService.DEBUG_WALLPAPER_LIGHT && !token.hidden) Slog.d(TAG, "Hiding wallpaper " + token + " from " + w); "Hiding wallpaper " + token + " from " + w + "\n" + Debug.getCallers(5, " ")); token.hidden = true; } } Loading services/java/com/android/server/wm/WindowManagerService.java +16 −7 Original line number Diff line number Diff line Loading @@ -192,7 +192,7 @@ public class WindowManagerService extends IWindowManager.Stub static final boolean DEBUG_STARTING_WINDOW = false; static final boolean DEBUG_REORDER = false; static final boolean DEBUG_WALLPAPER = false; static final boolean DEBUG_WALLPAPER_LIGHT = true || DEBUG_WALLPAPER; static final boolean DEBUG_WALLPAPER_LIGHT = false || DEBUG_WALLPAPER; static final boolean DEBUG_DRAG = false; static final boolean DEBUG_SCREEN_ON = false; static final boolean DEBUG_SCREENSHOT = false; Loading Loading @@ -545,7 +545,7 @@ public class WindowManagerService extends IWindowManager.Stub WindowState mWallpaperTarget = null; // If non-null, we are in the middle of animating from one wallpaper target // to another, and this is the lower one in Z-order. private WindowState mLowerWallpaperTarget = null; WindowState mLowerWallpaperTarget = null; // If non-null, we are in the middle of animating from one wallpaper target // to another, and this is the higher one in Z-order. private WindowState mUpperWallpaperTarget = null; Loading Loading @@ -2847,7 +2847,7 @@ public class WindowManagerService extends IWindowManager.Stub } if ((attrChanges&WindowManager.LayoutParams.FORMAT_CHANGED) != 0) { // To change the format, we need to re-build the surface. winAnimator.destroySurfaceLocked(); winAnimator.destroySurfaceLocked(false); toBeDisplayed = true; surfaceChanged = true; } Loading Loading @@ -2928,7 +2928,7 @@ public class WindowManagerService extends IWindowManager.Stub if (mInputMethodWindow == win) { mInputMethodWindow = null; } winAnimator.destroySurfaceLocked(); winAnimator.destroySurfaceLocked(false); } scheduleNotifyWindowTranstionIfNeededLocked(win, transit); } Loading Loading @@ -3030,7 +3030,7 @@ public class WindowManagerService extends IWindowManager.Stub if (win == null) { return; } win.mWinAnimator.destroyDeferredSurfaceLocked(); win.mWinAnimator.destroyDeferredSurfaceLocked(false); } } finally { Binder.restoreCallingIdentity(origId); Loading Loading @@ -8136,7 +8136,7 @@ public class WindowManagerService extends IWindowManager.Stub pw.flush(); Slog.w(TAG, "This window was lost: " + ws); Slog.w(TAG, sw.toString()); ws.mWinAnimator.destroySurfaceLocked(); ws.mWinAnimator.destroySurfaceLocked(false); } } Slog.w(TAG, "Current app token list:"); Loading Loading @@ -9443,7 +9443,7 @@ public class WindowManagerService extends IWindowManager.Stub if (win == mWallpaperTarget) { wallpaperDestroyed = true; } win.mWinAnimator.destroySurfaceLocked(); win.mWinAnimator.destroySurfaceLocked(false); } while (i > 0); mDestroySurface.clear(); } Loading Loading @@ -9692,6 +9692,15 @@ public class WindowManagerService extends IWindowManager.Stub allWinAnimatorLists.put(displayContent.getDisplayId(), winAnimatorList); } if (WindowManagerService.DEBUG_WALLPAPER_LIGHT) { if (mWallpaperTarget != layoutToAnim.mWallpaperTarget || mLowerWallpaperTarget != layoutToAnim.mLowerWallpaperTarget || mUpperWallpaperTarget != layoutToAnim.mUpperWallpaperTarget) { Slog.d(TAG, "Pushing anim wallpaper: target=" + layoutToAnim.mWallpaperTarget + " lower=" + layoutToAnim.mLowerWallpaperTarget + " upper=" + layoutToAnim.mUpperWallpaperTarget + "\n" + Debug.getCallers(5, " ")); } } layoutToAnim.mWallpaperTarget = mWallpaperTarget; layoutToAnim.mLowerWallpaperTarget = mLowerWallpaperTarget; layoutToAnim.mUpperWallpaperTarget = mUpperWallpaperTarget; Loading services/java/com/android/server/wm/WindowState.java +2 −2 Original line number Diff line number Diff line Loading @@ -875,8 +875,8 @@ final class WindowState implements WindowManagerPolicy.WindowState { if (WindowManagerService.DEBUG_ADD_REMOVE) Slog.v(TAG, "Removing " + this + " from " + mAttachedWindow); mAttachedWindow.mChildWindows.remove(this); } mWinAnimator.destroyDeferredSurfaceLocked(); mWinAnimator.destroySurfaceLocked(); mWinAnimator.destroyDeferredSurfaceLocked(false); mWinAnimator.destroySurfaceLocked(false); mSession.windowRemovedLocked(); try { mClient.asBinder().unlinkToDeath(mDeathRecipient, 0); Loading services/java/com/android/server/wm/WindowStateAnimator.java +38 −22 Original line number Diff line number Diff line Loading @@ -225,7 +225,7 @@ class WindowStateAnimator { mAnimation.cancel(); mAnimation = null; mLocalAnimating = false; destroySurfaceLocked(); destroySurfaceLocked(true); } } Loading Loading @@ -412,7 +412,7 @@ class WindowStateAnimator { mService.mPendingRemove.add(mWin); mWin.mRemoveOnExit = false; } mAnimator.hideWallpapersLocked(mWin); mAnimator.hideWallpapersLocked(mWin, true); } void hide() { Loading Loading @@ -500,17 +500,21 @@ class WindowStateAnimator { @Override public void setAlpha(float alpha) { super.setAlpha(alpha); mSurfaceTraceAlpha = alpha; if (alpha != mSurfaceTraceAlpha) { Slog.v(SURFACE_TAG, "setAlpha: " + this + ". Called by " + Debug.getCallers(3)); } mSurfaceTraceAlpha = alpha; } @Override public void setLayer(int zorder) { super.setLayer(zorder); mLayer = zorder; if (zorder != mLayer) { Slog.v(SURFACE_TAG, "setLayer: " + this + ". Called by " + Debug.getCallers(3)); } mLayer = zorder; sSurfaces.remove(this); int i; Loading @@ -526,50 +530,62 @@ class WindowStateAnimator { @Override public void setPosition(float x, float y) { super.setPosition(x, y); mPosition.set(x, y); if (x != mPosition.x || y != mPosition.y) { Slog.v(SURFACE_TAG, "setPosition: " + this + ". Called by " + Debug.getCallers(3)); } mPosition.set(x, y); } @Override public void setSize(int w, int h) { super.setSize(w, h); mSize.set(w, h); if (w != mSize.x || h != mSize.y) { Slog.v(SURFACE_TAG, "setSize: " + this + ". Called by " + Debug.getCallers(3)); } mSize.set(w, h); } @Override public void setWindowCrop(Rect crop) { super.setWindowCrop(crop); if (crop != null) { mWindowCrop.set(crop); } if (!crop.equals(mWindowCrop)) { Slog.v(SURFACE_TAG, "setWindowCrop: " + this + ". Called by " + Debug.getCallers(3)); } mWindowCrop.set(crop); } } @Override public void setLayerStack(int layerStack) { super.setLayerStack(layerStack); mLayerStack = layerStack; if (layerStack != mLayerStack) { Slog.v(SURFACE_TAG, "setLayerStack: " + this + ". Called by " + Debug.getCallers(3)); } mLayerStack = layerStack; } @Override public void hide() { super.hide(); mShown = false; if (mShown) { Slog.v(SURFACE_TAG, "hide: " + this + ". Called by " + Debug.getCallers(3)); } mShown = false; } @Override public void show() { super.show(); mShown = true; if (!mShown) { Slog.v(SURFACE_TAG, "show: " + this + ". Called by " + Debug.getCallers(3)); } mShown = true; } @Override public void destroy() { Loading Loading @@ -728,7 +744,7 @@ class WindowStateAnimator { return mSurface; } void destroySurfaceLocked() { void destroySurfaceLocked(boolean fromAnimator) { if (mWin.mAppToken != null && mWin == mWin.mAppToken.startingWindow) { mWin.mAppToken.startingDisplayed = false; } Loading Loading @@ -778,7 +794,7 @@ class WindowStateAnimator { } mSurface.destroy(); } mAnimator.hideWallpapersLocked(mWin); mAnimator.hideWallpapersLocked(mWin, fromAnimator); } catch (RuntimeException e) { Slog.w(TAG, "Exception thrown when destroying Window " + this + " surface " + mSurface + " session " + mSession Loading @@ -792,7 +808,7 @@ class WindowStateAnimator { } } void destroyDeferredSurfaceLocked() { void destroyDeferredSurfaceLocked(boolean fromAnimator) { try { if (mPendingDestroySurface != null) { if (SHOW_TRANSACTIONS || SHOW_SURFACE_ALLOC) { Loading @@ -804,7 +820,7 @@ class WindowStateAnimator { WindowManagerService.logSurface(mWin, "DESTROY PENDING", e); } mPendingDestroySurface.destroy(); mAnimator.hideWallpapersLocked(mWin); mAnimator.hideWallpapersLocked(mWin, fromAnimator); } } catch (RuntimeException e) { Slog.w(TAG, "Exception thrown when destroying Window " Loading Loading @@ -1192,7 +1208,7 @@ class WindowStateAnimator { hide(); } else if (w.mAttachedHidden || !w.isReadyForDisplay()) { hide(); mAnimator.hideWallpapersLocked(w); mAnimator.hideWallpapersLocked(w, true); // If we are waiting for this window to handle an // orientation change, well, it is hidden, so Loading Loading
services/java/com/android/server/wm/WindowAnimator.java +29 −8 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import static com.android.server.wm.WindowManagerService.LayoutFields.SET_ORIENT import static com.android.server.wm.WindowManagerService.H.UPDATE_ANIM_PARAMETERS; import android.content.Context; import android.os.Debug; import android.os.SystemClock; import android.util.Log; import android.util.Slog; Loading Loading @@ -203,9 +204,9 @@ public class WindowAnimator { if (mWallpaperTarget != layoutToAnim.mWallpaperTarget || mLowerWallpaperTarget != layoutToAnim.mLowerWallpaperTarget || mUpperWallpaperTarget != layoutToAnim.mUpperWallpaperTarget) { Slog.d(TAG, "Updating anim wallpaper: target=" + mWallpaperTarget + " lower=" + mLowerWallpaperTarget + " upper=" + mUpperWallpaperTarget); Slog.d(TAG, "Pulling anim wallpaper: target=" + layoutToAnim.mWallpaperTarget + " lower=" + layoutToAnim.mLowerWallpaperTarget + " upper=" + layoutToAnim.mUpperWallpaperTarget); } } mWallpaperTarget = layoutToAnim.mWallpaperTarget; Loading Loading @@ -259,11 +260,30 @@ public class WindowAnimator { } } void hideWallpapersLocked(final WindowState w) { if ((mWallpaperTarget == w && mLowerWallpaperTarget == null) || mWallpaperTarget == null) { final int numTokens = mWallpaperTokens.size(); void hideWallpapersLocked(final WindowState w, boolean fromAnimator) { // There is an issue where this function can be called either from // the animation or the layout side of the window manager. The problem // is that if it is called from the layout side, we may not yet have // propagated the current layout wallpaper state over into the animation // state. If that is the case, we can do bad things like hide the // wallpaper when we had just made it shown because the animation side // doesn't yet see that there is now a wallpaper target. As a temporary // work-around, we tell the function here which side of the window manager // is calling so it can use the right state. if (fromAnimator) { hideWallpapersLocked(w, mWallpaperTarget, mLowerWallpaperTarget, mWallpaperTokens); } else { hideWallpapersLocked(w, mService.mWallpaperTarget, mService.mLowerWallpaperTarget, mService.mWallpaperTokens); } } void hideWallpapersLocked(final WindowState w, final WindowState wallpaperTarget, final WindowState lowerWallpaperTarget, final ArrayList<WindowToken> wallpaperTokens) { if ((wallpaperTarget == w && lowerWallpaperTarget == null) || wallpaperTarget == null) { final int numTokens = wallpaperTokens.size(); for (int i = numTokens - 1; i >= 0; i--) { final WindowToken token = mWallpaperTokens.get(i); final WindowToken token = wallpaperTokens.get(i); final int numWindows = token.windows.size(); for (int j = numWindows - 1; j >= 0; j--) { final WindowState wallpaper = token.windows.get(j); Loading @@ -276,7 +296,8 @@ public class WindowAnimator { } } if (WindowManagerService.DEBUG_WALLPAPER_LIGHT && !token.hidden) Slog.d(TAG, "Hiding wallpaper " + token + " from " + w); "Hiding wallpaper " + token + " from " + w + "\n" + Debug.getCallers(5, " ")); token.hidden = true; } } Loading
services/java/com/android/server/wm/WindowManagerService.java +16 −7 Original line number Diff line number Diff line Loading @@ -192,7 +192,7 @@ public class WindowManagerService extends IWindowManager.Stub static final boolean DEBUG_STARTING_WINDOW = false; static final boolean DEBUG_REORDER = false; static final boolean DEBUG_WALLPAPER = false; static final boolean DEBUG_WALLPAPER_LIGHT = true || DEBUG_WALLPAPER; static final boolean DEBUG_WALLPAPER_LIGHT = false || DEBUG_WALLPAPER; static final boolean DEBUG_DRAG = false; static final boolean DEBUG_SCREEN_ON = false; static final boolean DEBUG_SCREENSHOT = false; Loading Loading @@ -545,7 +545,7 @@ public class WindowManagerService extends IWindowManager.Stub WindowState mWallpaperTarget = null; // If non-null, we are in the middle of animating from one wallpaper target // to another, and this is the lower one in Z-order. private WindowState mLowerWallpaperTarget = null; WindowState mLowerWallpaperTarget = null; // If non-null, we are in the middle of animating from one wallpaper target // to another, and this is the higher one in Z-order. private WindowState mUpperWallpaperTarget = null; Loading Loading @@ -2847,7 +2847,7 @@ public class WindowManagerService extends IWindowManager.Stub } if ((attrChanges&WindowManager.LayoutParams.FORMAT_CHANGED) != 0) { // To change the format, we need to re-build the surface. winAnimator.destroySurfaceLocked(); winAnimator.destroySurfaceLocked(false); toBeDisplayed = true; surfaceChanged = true; } Loading Loading @@ -2928,7 +2928,7 @@ public class WindowManagerService extends IWindowManager.Stub if (mInputMethodWindow == win) { mInputMethodWindow = null; } winAnimator.destroySurfaceLocked(); winAnimator.destroySurfaceLocked(false); } scheduleNotifyWindowTranstionIfNeededLocked(win, transit); } Loading Loading @@ -3030,7 +3030,7 @@ public class WindowManagerService extends IWindowManager.Stub if (win == null) { return; } win.mWinAnimator.destroyDeferredSurfaceLocked(); win.mWinAnimator.destroyDeferredSurfaceLocked(false); } } finally { Binder.restoreCallingIdentity(origId); Loading Loading @@ -8136,7 +8136,7 @@ public class WindowManagerService extends IWindowManager.Stub pw.flush(); Slog.w(TAG, "This window was lost: " + ws); Slog.w(TAG, sw.toString()); ws.mWinAnimator.destroySurfaceLocked(); ws.mWinAnimator.destroySurfaceLocked(false); } } Slog.w(TAG, "Current app token list:"); Loading Loading @@ -9443,7 +9443,7 @@ public class WindowManagerService extends IWindowManager.Stub if (win == mWallpaperTarget) { wallpaperDestroyed = true; } win.mWinAnimator.destroySurfaceLocked(); win.mWinAnimator.destroySurfaceLocked(false); } while (i > 0); mDestroySurface.clear(); } Loading Loading @@ -9692,6 +9692,15 @@ public class WindowManagerService extends IWindowManager.Stub allWinAnimatorLists.put(displayContent.getDisplayId(), winAnimatorList); } if (WindowManagerService.DEBUG_WALLPAPER_LIGHT) { if (mWallpaperTarget != layoutToAnim.mWallpaperTarget || mLowerWallpaperTarget != layoutToAnim.mLowerWallpaperTarget || mUpperWallpaperTarget != layoutToAnim.mUpperWallpaperTarget) { Slog.d(TAG, "Pushing anim wallpaper: target=" + layoutToAnim.mWallpaperTarget + " lower=" + layoutToAnim.mLowerWallpaperTarget + " upper=" + layoutToAnim.mUpperWallpaperTarget + "\n" + Debug.getCallers(5, " ")); } } layoutToAnim.mWallpaperTarget = mWallpaperTarget; layoutToAnim.mLowerWallpaperTarget = mLowerWallpaperTarget; layoutToAnim.mUpperWallpaperTarget = mUpperWallpaperTarget; Loading
services/java/com/android/server/wm/WindowState.java +2 −2 Original line number Diff line number Diff line Loading @@ -875,8 +875,8 @@ final class WindowState implements WindowManagerPolicy.WindowState { if (WindowManagerService.DEBUG_ADD_REMOVE) Slog.v(TAG, "Removing " + this + " from " + mAttachedWindow); mAttachedWindow.mChildWindows.remove(this); } mWinAnimator.destroyDeferredSurfaceLocked(); mWinAnimator.destroySurfaceLocked(); mWinAnimator.destroyDeferredSurfaceLocked(false); mWinAnimator.destroySurfaceLocked(false); mSession.windowRemovedLocked(); try { mClient.asBinder().unlinkToDeath(mDeathRecipient, 0); Loading
services/java/com/android/server/wm/WindowStateAnimator.java +38 −22 Original line number Diff line number Diff line Loading @@ -225,7 +225,7 @@ class WindowStateAnimator { mAnimation.cancel(); mAnimation = null; mLocalAnimating = false; destroySurfaceLocked(); destroySurfaceLocked(true); } } Loading Loading @@ -412,7 +412,7 @@ class WindowStateAnimator { mService.mPendingRemove.add(mWin); mWin.mRemoveOnExit = false; } mAnimator.hideWallpapersLocked(mWin); mAnimator.hideWallpapersLocked(mWin, true); } void hide() { Loading Loading @@ -500,17 +500,21 @@ class WindowStateAnimator { @Override public void setAlpha(float alpha) { super.setAlpha(alpha); mSurfaceTraceAlpha = alpha; if (alpha != mSurfaceTraceAlpha) { Slog.v(SURFACE_TAG, "setAlpha: " + this + ". Called by " + Debug.getCallers(3)); } mSurfaceTraceAlpha = alpha; } @Override public void setLayer(int zorder) { super.setLayer(zorder); mLayer = zorder; if (zorder != mLayer) { Slog.v(SURFACE_TAG, "setLayer: " + this + ". Called by " + Debug.getCallers(3)); } mLayer = zorder; sSurfaces.remove(this); int i; Loading @@ -526,50 +530,62 @@ class WindowStateAnimator { @Override public void setPosition(float x, float y) { super.setPosition(x, y); mPosition.set(x, y); if (x != mPosition.x || y != mPosition.y) { Slog.v(SURFACE_TAG, "setPosition: " + this + ". Called by " + Debug.getCallers(3)); } mPosition.set(x, y); } @Override public void setSize(int w, int h) { super.setSize(w, h); mSize.set(w, h); if (w != mSize.x || h != mSize.y) { Slog.v(SURFACE_TAG, "setSize: " + this + ". Called by " + Debug.getCallers(3)); } mSize.set(w, h); } @Override public void setWindowCrop(Rect crop) { super.setWindowCrop(crop); if (crop != null) { mWindowCrop.set(crop); } if (!crop.equals(mWindowCrop)) { Slog.v(SURFACE_TAG, "setWindowCrop: " + this + ". Called by " + Debug.getCallers(3)); } mWindowCrop.set(crop); } } @Override public void setLayerStack(int layerStack) { super.setLayerStack(layerStack); mLayerStack = layerStack; if (layerStack != mLayerStack) { Slog.v(SURFACE_TAG, "setLayerStack: " + this + ". Called by " + Debug.getCallers(3)); } mLayerStack = layerStack; } @Override public void hide() { super.hide(); mShown = false; if (mShown) { Slog.v(SURFACE_TAG, "hide: " + this + ". Called by " + Debug.getCallers(3)); } mShown = false; } @Override public void show() { super.show(); mShown = true; if (!mShown) { Slog.v(SURFACE_TAG, "show: " + this + ". Called by " + Debug.getCallers(3)); } mShown = true; } @Override public void destroy() { Loading Loading @@ -728,7 +744,7 @@ class WindowStateAnimator { return mSurface; } void destroySurfaceLocked() { void destroySurfaceLocked(boolean fromAnimator) { if (mWin.mAppToken != null && mWin == mWin.mAppToken.startingWindow) { mWin.mAppToken.startingDisplayed = false; } Loading Loading @@ -778,7 +794,7 @@ class WindowStateAnimator { } mSurface.destroy(); } mAnimator.hideWallpapersLocked(mWin); mAnimator.hideWallpapersLocked(mWin, fromAnimator); } catch (RuntimeException e) { Slog.w(TAG, "Exception thrown when destroying Window " + this + " surface " + mSurface + " session " + mSession Loading @@ -792,7 +808,7 @@ class WindowStateAnimator { } } void destroyDeferredSurfaceLocked() { void destroyDeferredSurfaceLocked(boolean fromAnimator) { try { if (mPendingDestroySurface != null) { if (SHOW_TRANSACTIONS || SHOW_SURFACE_ALLOC) { Loading @@ -804,7 +820,7 @@ class WindowStateAnimator { WindowManagerService.logSurface(mWin, "DESTROY PENDING", e); } mPendingDestroySurface.destroy(); mAnimator.hideWallpapersLocked(mWin); mAnimator.hideWallpapersLocked(mWin, fromAnimator); } } catch (RuntimeException e) { Slog.w(TAG, "Exception thrown when destroying Window " Loading Loading @@ -1192,7 +1208,7 @@ class WindowStateAnimator { hide(); } else if (w.mAttachedHidden || !w.isReadyForDisplay()) { hide(); mAnimator.hideWallpapersLocked(w); mAnimator.hideWallpapersLocked(w, true); // If we are waiting for this window to handle an // orientation change, well, it is hidden, so Loading