am 378510c3: am 106f88c8: Merge "Revert "Revert "Merge getDisplayList and updateDisplayListIfDirty""" into mnc-dev
* commit '378510c3aecf958871e4d9b35b9bb5e80f5e9ea2': Revert "Revert "Merge getDisplayList and updateDisplayListIfDirty""
This commit is contained in:
@@ -41,7 +41,7 @@ public class GhostView extends View {
|
|||||||
final ViewGroup parent = (ViewGroup) mView.getParent();
|
final ViewGroup parent = (ViewGroup) mView.getParent();
|
||||||
setGhostedVisibility(View.INVISIBLE);
|
setGhostedVisibility(View.INVISIBLE);
|
||||||
parent.mRecreateDisplayList = true;
|
parent.mRecreateDisplayList = true;
|
||||||
parent.getDisplayList();
|
parent.updateDisplayListIfDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -49,7 +49,7 @@ public class GhostView extends View {
|
|||||||
if (canvas instanceof DisplayListCanvas) {
|
if (canvas instanceof DisplayListCanvas) {
|
||||||
DisplayListCanvas dlCanvas = (DisplayListCanvas) canvas;
|
DisplayListCanvas dlCanvas = (DisplayListCanvas) canvas;
|
||||||
mView.mRecreateDisplayList = true;
|
mView.mRecreateDisplayList = true;
|
||||||
RenderNode renderNode = mView.getDisplayList();
|
RenderNode renderNode = mView.updateDisplayListIfDirty();
|
||||||
if (renderNode.isValid()) {
|
if (renderNode.isValid()) {
|
||||||
dlCanvas.insertReorderBarrier(); // enable shadow for this rendernode
|
dlCanvas.insertReorderBarrier(); // enable shadow for this rendernode
|
||||||
dlCanvas.drawRenderNode(renderNode);
|
dlCanvas.drawRenderNode(renderNode);
|
||||||
@@ -84,7 +84,7 @@ public class GhostView extends View {
|
|||||||
final ViewGroup parent = (ViewGroup) mView.getParent();
|
final ViewGroup parent = (ViewGroup) mView.getParent();
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
parent.mRecreateDisplayList = true;
|
parent.mRecreateDisplayList = true;
|
||||||
parent.getDisplayList();
|
parent.updateDisplayListIfDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -269,7 +269,7 @@ public class ThreadedRenderer extends HardwareRenderer {
|
|||||||
view.mRecreateDisplayList = (view.mPrivateFlags & View.PFLAG_INVALIDATED)
|
view.mRecreateDisplayList = (view.mPrivateFlags & View.PFLAG_INVALIDATED)
|
||||||
== View.PFLAG_INVALIDATED;
|
== View.PFLAG_INVALIDATED;
|
||||||
view.mPrivateFlags &= ~View.PFLAG_INVALIDATED;
|
view.mPrivateFlags &= ~View.PFLAG_INVALIDATED;
|
||||||
view.getDisplayList();
|
view.updateDisplayListIfDirty();
|
||||||
view.mRecreateDisplayList = false;
|
view.mRecreateDisplayList = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,7 +285,7 @@ public class ThreadedRenderer extends HardwareRenderer {
|
|||||||
callbacks.onHardwarePreDraw(canvas);
|
callbacks.onHardwarePreDraw(canvas);
|
||||||
|
|
||||||
canvas.insertReorderBarrier();
|
canvas.insertReorderBarrier();
|
||||||
canvas.drawRenderNode(view.getDisplayList());
|
canvas.drawRenderNode(view.updateDisplayListIfDirty());
|
||||||
canvas.insertInorderBarrier();
|
canvas.insertInorderBarrier();
|
||||||
|
|
||||||
callbacks.onHardwarePostDraw(canvas);
|
callbacks.onHardwarePostDraw(canvas);
|
||||||
|
|||||||
@@ -14711,11 +14711,16 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
return !(mAttachInfo == null || mAttachInfo.mHardwareRenderer == null);
|
return !(mAttachInfo == null || mAttachInfo.mHardwareRenderer == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateDisplayListIfDirty() {
|
/**
|
||||||
|
* Gets the RenderNode for the view, and updates its DisplayList (if needed and supported)
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
public RenderNode updateDisplayListIfDirty() {
|
||||||
final RenderNode renderNode = mRenderNode;
|
final RenderNode renderNode = mRenderNode;
|
||||||
if (!canHaveDisplayList()) {
|
if (!canHaveDisplayList()) {
|
||||||
// can't populate RenderNode, don't try
|
// can't populate RenderNode, don't try
|
||||||
return;
|
return renderNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((mPrivateFlags & PFLAG_DRAWING_CACHE_VALID) == 0
|
if ((mPrivateFlags & PFLAG_DRAWING_CACHE_VALID) == 0
|
||||||
@@ -14729,7 +14734,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
mPrivateFlags &= ~PFLAG_DIRTY_MASK;
|
mPrivateFlags &= ~PFLAG_DIRTY_MASK;
|
||||||
dispatchGetDisplayList();
|
dispatchGetDisplayList();
|
||||||
|
|
||||||
return; // no work needed
|
return renderNode; // no work needed
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we got here, we're recreating it. Mark it as such to ensure that
|
// If we got here, we're recreating it. Mark it as such to ensure that
|
||||||
@@ -14778,19 +14783,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
mPrivateFlags |= PFLAG_DRAWN | PFLAG_DRAWING_CACHE_VALID;
|
mPrivateFlags |= PFLAG_DRAWN | PFLAG_DRAWING_CACHE_VALID;
|
||||||
mPrivateFlags &= ~PFLAG_DIRTY_MASK;
|
mPrivateFlags &= ~PFLAG_DIRTY_MASK;
|
||||||
}
|
}
|
||||||
}
|
return renderNode;
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a RenderNode with View draw content recorded, which can be
|
|
||||||
* used to draw this view again without executing its draw method.
|
|
||||||
*
|
|
||||||
* @return A RenderNode ready to replay, or null if caching is not enabled.
|
|
||||||
*
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
public RenderNode getDisplayList() {
|
|
||||||
updateDisplayListIfDirty();
|
|
||||||
return mRenderNode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetDisplayList() {
|
private void resetDisplayList() {
|
||||||
@@ -15552,7 +15545,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
if (drawingWithRenderNode) {
|
if (drawingWithRenderNode) {
|
||||||
// Delay getting the display list until animation-driven alpha values are
|
// Delay getting the display list until animation-driven alpha values are
|
||||||
// set up and possibly passed on to the view
|
// set up and possibly passed on to the view
|
||||||
renderNode = getDisplayList();
|
renderNode = updateDisplayListIfDirty();
|
||||||
if (!renderNode.isValid()) {
|
if (!renderNode.isValid()) {
|
||||||
// Uncommon, but possible. If a view is removed from the hierarchy during the call
|
// Uncommon, but possible. If a view is removed from the hierarchy during the call
|
||||||
// to getDisplayList(), the display list will be marked invalid and we should not
|
// to getDisplayList(), the display list will be marked invalid and we should not
|
||||||
|
|||||||
@@ -3524,10 +3524,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void recreateChildDisplayList(View child) {
|
private void recreateChildDisplayList(View child) {
|
||||||
child.mRecreateDisplayList = (child.mPrivateFlags & PFLAG_INVALIDATED)
|
child.mRecreateDisplayList = (child.mPrivateFlags & PFLAG_INVALIDATED) != 0;
|
||||||
== PFLAG_INVALIDATED;
|
|
||||||
child.mPrivateFlags &= ~PFLAG_INVALIDATED;
|
child.mPrivateFlags &= ~PFLAG_INVALIDATED;
|
||||||
child.getDisplayList();
|
child.updateDisplayListIfDirty();
|
||||||
child.mRecreateDisplayList = false;
|
child.mRecreateDisplayList = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2322,11 +2322,9 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
void outputDisplayList(View view) {
|
void outputDisplayList(View view) {
|
||||||
RenderNode renderNode = view.getDisplayList();
|
RenderNode renderNode = view.updateDisplayListIfDirty();
|
||||||
if (renderNode != null) {
|
|
||||||
renderNode.output();
|
renderNode.output();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see #PROPERTY_PROFILE_RENDERING
|
* @see #PROPERTY_PROFILE_RENDERING
|
||||||
|
|||||||
@@ -46,9 +46,9 @@ public class ProjectionActivity extends Activity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setProject(boolean value) {
|
private void setProject(boolean value) {
|
||||||
RenderNode displayList = getDisplayList();
|
RenderNode renderNode = updateDisplayListIfDirty();
|
||||||
if (displayList != null) {
|
if (renderNode != null) {
|
||||||
displayList.setProjectBackwards(value);
|
renderNode.setProjectBackwards(value);
|
||||||
}
|
}
|
||||||
// NOTE: we can't invalidate ProjectedView for the redraw because:
|
// NOTE: we can't invalidate ProjectedView for the redraw because:
|
||||||
// 1) the view won't preserve displayList properties that it doesn't know about
|
// 1) the view won't preserve displayList properties that it doesn't know about
|
||||||
|
|||||||
Reference in New Issue
Block a user