summaryrefslogtreecommitdiff
path: root/core/java/android/view/ViewRootImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
-rw-r--r--core/java/android/view/ViewRootImpl.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index c37120220f1a..810919710550 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -491,6 +491,9 @@ public final class ViewRootImpl implements ViewParent,
protected final ViewFrameInfo mViewFrameInfo = new ViewFrameInfo();
private final InputEventAssigner mInputEventAssigner = new InputEventAssigner();
+ // Whether to draw this surface as DISPLAY_DECORATION.
+ boolean mDisplayDecorationCached = false;
+
/**
* Update the Choreographer's FrameInfo object with the timing information for the current
* ViewRootImpl instance. Erase the data in the current ViewFrameInfo to prepare for the next
@@ -2842,6 +2845,9 @@ public final class ViewRootImpl implements ViewParent,
if (mSurfaceControl.isValid()) {
updateOpacity(mWindowAttributes, dragResizing,
surfaceControlChanged /*forceUpdate */);
+ if (surfaceControlChanged) {
+ updateDisplayDecoration();
+ }
}
if (DEBUG_LAYOUT) Log.v(mTag, "relayout: frame=" + frame.toShortString()
@@ -10399,6 +10405,23 @@ public final class ViewRootImpl implements ViewParent,
}
/**
+ * @hide
+ */
+ public void setDisplayDecoration(boolean displayDecoration) {
+ if (displayDecoration == mDisplayDecorationCached) return;
+
+ mDisplayDecorationCached = displayDecoration;
+
+ if (mSurfaceControl.isValid()) {
+ updateDisplayDecoration();
+ }
+ }
+
+ private void updateDisplayDecoration() {
+ mTransaction.setDisplayDecoration(mSurfaceControl, mDisplayDecorationCached).apply();
+ }
+
+ /**
* Sends a list of blur regions to SurfaceFlinger, tagged with a frame.
*
* @param regionCopy List of regions