Merge "Reland "Add/plumb SurfaceControl.DISPLAY_DECORATION""
This commit is contained in:
commit
3fccaab880
@ -514,6 +514,15 @@ public final class SurfaceControl implements Parcelable {
|
||||
*/
|
||||
public static final int ENABLE_BACKPRESSURE = 0x00000100;
|
||||
|
||||
/**
|
||||
* Buffers from this SurfaceControl should be considered display decorations.
|
||||
*
|
||||
* If the hardware has optimizations for display decorations (e.g. rounded corners, camera
|
||||
* cutouts, etc), it should use them for this layer.
|
||||
* @hide
|
||||
*/
|
||||
public static final int DISPLAY_DECORATION = 0x00000200;
|
||||
|
||||
/**
|
||||
* Surface creation flag: Creates a surface where color components are interpreted
|
||||
* as "non pre-multiplied" by their alpha channel. Of course this flag is
|
||||
@ -3265,6 +3274,21 @@ public final class SurfaceControl implements Parcelable {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether the surface should take advantage of display decoration optimizations.
|
||||
* @hide
|
||||
*/
|
||||
public Transaction setDisplayDecoration(SurfaceControl sc, boolean displayDecoration) {
|
||||
checkPreconditions(sc);
|
||||
if (displayDecoration) {
|
||||
nativeSetFlags(mNativeObject, sc.mNativeObject, DISPLAY_DECORATION,
|
||||
DISPLAY_DECORATION);
|
||||
} else {
|
||||
nativeSetFlags(mNativeObject, sc.mNativeObject, 0, DISPLAY_DECORATION);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the surface must be considered opaque, even if its pixel format is
|
||||
* set to translucent. This can be useful if an application needs full RGBA 8888 support
|
||||
|
@ -493,6 +493,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
|
||||
@ -2853,6 +2856,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()
|
||||
@ -10439,6 +10445,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.
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user