diff options
| author | 2013-08-07 21:32:32 +0000 | |
|---|---|---|
| committer | 2013-08-07 21:32:32 +0000 | |
| commit | 18ec40c44c936fd5146133ccc7446a4cd860b527 (patch) | |
| tree | b69aed4fbee1cea17e3067115f93dc8d1bd12db9 | |
| parent | 9fb9a1c5c1f7921309380476e1c99724663b214f (diff) | |
| parent | 2eb15342be5b075dda3df29b2b014a92ce13a5f8 (diff) | |
Merge "Destroy surfaces when display is removed."
3 files changed, 17 insertions, 1 deletions
diff --git a/services/java/com/android/server/wm/DisplayContent.java b/services/java/com/android/server/wm/DisplayContent.java index 2dcdcdd4e7a6..beeb899e8e2c 100644 --- a/services/java/com/android/server/wm/DisplayContent.java +++ b/services/java/com/android/server/wm/DisplayContent.java @@ -427,6 +427,12 @@ class DisplayContent { } } + void close() { + for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) { + mStackBoxes.get(stackBoxNdx).close(); + } + } + public void dump(String prefix, PrintWriter pw) { pw.print(prefix); pw.print("Display: mDisplayId="); pw.println(mDisplayId); final String subPrefix = " " + prefix; diff --git a/services/java/com/android/server/wm/StackBox.java b/services/java/com/android/server/wm/StackBox.java index d4cf4e26103d..d054e9a25ee1 100644 --- a/services/java/com/android/server/wm/StackBox.java +++ b/services/java/com/android/server/wm/StackBox.java @@ -380,6 +380,16 @@ public class StackBox { mSecond.switchUserStacks(userId); } + void close() { + if (mStack != null) { + mStack.mDimLayer.mDimSurface.destroy(); + mStack.mAnimationBackgroundSurface.mDimSurface.destroy(); + return; + } + mFirst.close(); + mSecond.close(); + } + public void dump(String prefix, PrintWriter pw) { pw.print(prefix); pw.print("mParent="); pw.println(mParent); pw.print(prefix); pw.print("mBounds="); pw.print(mBounds.toShortString()); diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 2e84d6d41901..27177f979964 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -10818,7 +10818,7 @@ public class WindowManagerService extends IWindowManager.Stub final DisplayContent displayContent = getDisplayContentLocked(displayId); if (displayContent != null) { mDisplayContents.delete(displayId); - + displayContent.close(); if (displayId == Display.DEFAULT_DISPLAY) { unregisterPointerEventListener(displayContent.mTapDetector); } |