summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/View.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/view/View.java')
-rw-r--r--core/java/android/view/View.java22
1 files changed, 17 insertions, 5 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 8efaeab..ed0ceb2 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -14711,11 +14711,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
return !(mAttachInfo == null || mAttachInfo.mHardwareRenderer == null);
}
- RenderNode updateDisplayListIfDirty() {
+ private void updateDisplayListIfDirty() {
final RenderNode renderNode = mRenderNode;
if (!canHaveDisplayList()) {
// can't populate RenderNode, don't try
- return renderNode;
+ return;
}
if ((mPrivateFlags & PFLAG_DRAWING_CACHE_VALID) == 0
@@ -14729,7 +14729,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mPrivateFlags &= ~PFLAG_DIRTY_MASK;
dispatchGetDisplayList();
- return renderNode; // no work needed
+ return; // no work needed
}
// If we got here, we're recreating it. Mark it as such to ensure that
@@ -14778,7 +14778,19 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mPrivateFlags |= PFLAG_DRAWN | PFLAG_DRAWING_CACHE_VALID;
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() {
@@ -15540,7 +15552,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
if (drawingWithRenderNode) {
// Delay getting the display list until animation-driven alpha values are
// set up and possibly passed on to the view
- renderNode = updateDisplayListIfDirty();
+ renderNode = getDisplayList();
if (!renderNode.isValid()) {
// 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