diff options
| author | Rob Carr <racarr@google.com> | 2021-04-20 00:42:30 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-04-20 00:42:30 +0000 |
| commit | 00019e2e569469ed4e72beb61d4df9089783ec70 (patch) | |
| tree | 8c3c1ad221ae24f3fe8c2e2bf037f7e3204eaa6d /core/java/android/view/SurfaceControl.java | |
| parent | 04029df9b89f1bca3d14010e272c6dd7f21ce8fb (diff) | |
| parent | 660a6679d97d04b732b4317d38902320da9167ee (diff) | |
Merge "SurfaceFlinger: Prepare to remove BufferQueueLayer" into sc-dev
Diffstat (limited to 'core/java/android/view/SurfaceControl.java')
| -rw-r--r-- | core/java/android/view/SurfaceControl.java | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 4977a6e59ede..83669fa96a9b 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -34,6 +34,7 @@ import android.annotation.Size; import android.annotation.TestApi; import android.compat.annotation.UnsupportedAppUsage; import android.graphics.Bitmap; +import android.graphics.BLASTBufferQueue; import android.graphics.ColorSpace; import android.graphics.GraphicBuffer; import android.graphics.Matrix; @@ -95,6 +96,7 @@ public final class SurfaceControl implements Parcelable { private static native void nativeWriteToParcel(long nativeObject, Parcel out); private static native void nativeRelease(long nativeObject); private static native void nativeDisconnect(long nativeObject); + private static native void nativeUpdateDefaultBufferSize(long nativeObject, int width, int height); private static native int nativeCaptureDisplay(DisplayCaptureArgs captureArgs, ScreenCaptureListener captureListener); private static native int nativeCaptureLayers(LayerCaptureArgs captureArgs, @@ -1083,6 +1085,11 @@ public final class SurfaceControl implements Parcelable { throw new IllegalStateException( "Only buffer layers can set a valid buffer size."); } + boolean isBqLayer = isBufferQueueLayer(); + if (isBqLayer) { + setBLASTLayer(); + } + return new SurfaceControl( mSession, mName, mWidth, mHeight, mFormat, mFlags, mParent, mMetadata, mLocalOwnerView, mCallsite); @@ -1139,9 +1146,6 @@ public final class SurfaceControl implements Parcelable { return setFlags(FX_SURFACE_NORMAL, FX_SURFACE_MASK); } - /** - * Set the initial size of the controlled surface's buffers in pixels. - */ private void unsetBufferSize() { mWidth = 0; mHeight = 0; @@ -1306,11 +1310,14 @@ public final class SurfaceControl implements Parcelable { return (mFlags & FX_SURFACE_EFFECT) == FX_SURFACE_EFFECT; } + private boolean isBufferQueueLayer() { + return (mFlags & FX_SURFACE_NORMAL) == FX_SURFACE_NORMAL; + } + /** * @hide */ public Builder setBLASTLayer() { - unsetBufferSize(); return setFlags(FX_SURFACE_BLAST, FX_SURFACE_MASK); } @@ -2659,8 +2666,7 @@ public final class SurfaceControl implements Parcelable { final Point size = mResizedSurfaces.valueAt(i); final SurfaceControl surfaceControl = mResizedSurfaces.keyAt(i); synchronized (surfaceControl.mLock) { - surfaceControl.mWidth = size.x; - surfaceControl.mHeight = size.y; + surfaceControl.resize(size.x, size.y); } } mResizedSurfaces.clear(); @@ -3576,4 +3582,13 @@ public final class SurfaceControl implements Parcelable { public static Transaction getGlobalTransaction() { return sGlobalTransaction; } + + /** + * @hide + */ + public void resize(int w, int h) { + mWidth = w; + mHeight = h; + nativeUpdateDefaultBufferSize(mNativeObject, w, h); + } } |
