From 94d691499bdce019421238ebdb6e3d48171eeefd Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Mon, 28 Sep 2009 22:14:42 -0700 Subject: [PATCH] Fix issue #1930911: Crash in system process Ensure that we do all the work for removing a window's view hierarchy in that window's thread. Change-Id: Ib7c1701aee6b541b75fd1a680f6987f959f2ba88 --- core/java/android/view/ViewRoot.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java index 398abf88f51b5..dba2e048dff20 100644 --- a/core/java/android/view/ViewRoot.java +++ b/core/java/android/view/ViewRoot.java @@ -1841,7 +1841,7 @@ public final class ViewRoot extends Handler implements ViewParent, } } break; case DIE: - dispatchDetachedFromWindow(); + doDie(); break; case DISPATCH_KEY_FROM_IME: { if (LOCAL_LOGV) Log.v( @@ -2520,6 +2520,14 @@ public final class ViewRoot extends Handler implements ViewParent, } public void die(boolean immediate) { + if (immediate) { + doDie(); + } else { + sendEmptyMessage(DIE); + } + } + + void doDie() { checkThread(); if (Config.LOGV) Log.v("ViewRoot", "DIE in " + this + " of " + mSurface); synchronized (this) { @@ -2543,11 +2551,7 @@ public final class ViewRoot extends Handler implements ViewParent, } if (mAdded) { mAdded = false; - if (immediate) { - dispatchDetachedFromWindow(); - } else if (mView != null) { - sendEmptyMessage(DIE); - } + dispatchDetachedFromWindow(); } } }