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
This commit is contained in:
Dianne Hackborn
2009-09-28 22:14:42 -07:00
parent 6b1cb352b8
commit 94d691499b

View File

@@ -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();
}
}
}