Merge "Fix invalidation problem with display lists" into honeycomb
This commit is contained in:
@ -8249,7 +8249,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility
|
||||
// If we got here, we're recreating it. Mark it as such to ensure that
|
||||
// we copy in child display lists into ours in drawChild()
|
||||
mRecreateDisplayList = true;
|
||||
|
||||
if (mDisplayList == null) {
|
||||
mDisplayList = mAttachInfo.mHardwareRenderer.createDisplayList(this);
|
||||
// If we're creating a new display list, make sure our parent gets invalidated
|
||||
@ -8287,6 +8286,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility
|
||||
|
||||
mDisplayList.end();
|
||||
}
|
||||
} else {
|
||||
mPrivateFlags |= DRAWN | DRAWING_CACHE_VALID;
|
||||
mPrivateFlags &= ~DIRTY_MASK;
|
||||
}
|
||||
|
||||
return mDisplayList;
|
||||
|
@ -3497,7 +3497,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
|
||||
((ViewRoot) parent).invalidate();
|
||||
parent = null;
|
||||
} else if (view != null) {
|
||||
if ((mPrivateFlags & DRAWN) == DRAWN) {
|
||||
if ((view.mPrivateFlags & DRAWN) == DRAWN ||
|
||||
(view.mPrivateFlags & DRAWING_CACHE_VALID) == DRAWING_CACHE_VALID) {
|
||||
view.mPrivateFlags &= ~DRAWING_CACHE_VALID;
|
||||
view.mPrivateFlags |= DIRTY;
|
||||
parent = view.mParent;
|
||||
@ -3594,7 +3595,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
|
||||
ViewDebug.trace(this, ViewDebug.HierarchyTraceType.INVALIDATE_CHILD_IN_PARENT);
|
||||
}
|
||||
|
||||
if ((mPrivateFlags & DRAWN) == DRAWN) {
|
||||
if ((mPrivateFlags & DRAWN) == DRAWN ||
|
||||
(mPrivateFlags & DRAWING_CACHE_VALID) == DRAWING_CACHE_VALID) {
|
||||
if ((mGroupFlags & (FLAG_OPTIMIZE_INVALIDATE | FLAG_ANIMATION_DONE)) !=
|
||||
FLAG_OPTIMIZE_INVALIDATE) {
|
||||
dirty.offset(location[CHILD_LEFT_INDEX] - mScrollX,
|
||||
|
Reference in New Issue
Block a user