Merge "Attempt to recover from apps destroying their window at draw time Bug #6436642" into jb-dev

This commit is contained in:
Romain Guy
2012-05-06 14:13:19 -07:00
committed by Android (Google) Code Review

View File

@@ -230,6 +230,7 @@ public final class ViewRootImpl implements ViewParent,
boolean mHasHadWindowFocus;
boolean mLastWasImTarget;
boolean mWindowsAnimating;
boolean mIsDrawing;
int mLastSystemUiVisibility;
// Pool of queued input events.
@@ -2038,10 +2039,12 @@ public final class ViewRootImpl implements ViewParent,
final boolean fullRedrawNeeded = mFullRedrawNeeded;
mFullRedrawNeeded = false;
mIsDrawing = true;
Trace.traceBegin(Trace.TRACE_TAG_VIEW, "draw");
try {
draw(fullRedrawNeeded);
} finally {
mIsDrawing = false;
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
}
@@ -3963,7 +3966,12 @@ public final class ViewRootImpl implements ViewParent,
if (immediate) {
doDie();
} else {
destroyHardwareRenderer();
if (!mIsDrawing) {
destroyHardwareRenderer();
} else {
Log.e(TAG, "Attempting to destroy the window while drawing!\n" +
" window=" + this + ", title=" + mWindowAttributes.getTitle());
}
mHandler.sendEmptyMessage(MSG_DIE);
}
}