diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 7a621a318427..484c6f38e962 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -1449,6 +1449,9 @@ public final class ViewRootImpl implements ViewParent, } if (mStopped) { + if (mSurfaceHolder != null) { + notifySurfaceDestroyed(); + } destroySurface(); } } @@ -2393,13 +2396,7 @@ public final class ViewRootImpl implements ViewParent, } mIsCreating = false; } else if (hadSurface) { - mSurfaceHolder.ungetCallbacks(); - SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks(); - if (callbacks != null) { - for (SurfaceHolder.Callback c : callbacks) { - c.surfaceDestroyed(mSurfaceHolder); - } - } + notifySurfaceDestroyed(); mSurfaceHolder.mSurfaceLock.lock(); try { mSurfaceHolder.mSurface = new Surface(); @@ -2667,6 +2664,16 @@ public final class ViewRootImpl implements ViewParent, mIsInTraversal = false; } + private void notifySurfaceDestroyed() { + mSurfaceHolder.ungetCallbacks(); + SurfaceHolder.Callback[] callbacks = mSurfaceHolder.getCallbacks(); + if (callbacks != null) { + for (SurfaceHolder.Callback c : callbacks) { + c.surfaceDestroyed(mSurfaceHolder); + } + } + } + private void maybeHandleWindowMove(Rect frame) { // TODO: Well, we are checking whether the frame has changed similarly |
