diff options
| author | Robert Carr <racarr@google.com> | 2021-02-22 12:29:36 -0800 |
|---|---|---|
| committer | Rob Carr <racarr@google.com> | 2021-04-16 03:02:15 +0000 |
| commit | 660a6679d97d04b732b4317d38902320da9167ee (patch) | |
| tree | f7e4424f7f86bb39b1c8d0b57a5e38c5ee231205 /core/java/android/view/SurfaceControl.java | |
| parent | ac6f5ee9271cb65f01c52ee32b20625294e8d350 (diff) | |
SurfaceFlinger: Prepare to remove BufferQueueLayer
To prepare to remove BufferQueueLayer we port over the public Java API
(getSurface) and a few remaining clients (largely tests), by returning
a BBQ from getSurface.
Bug: 185492007
Test: Existing tests pass
Change-Id: I5c59dc5785333c543ef9f5e70faafab5da110bbd
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 21f75d419a5e..3a50f6388c28 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.Matrix; import android.graphics.PixelFormat; @@ -94,6 +95,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, @@ -1078,6 +1080,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); @@ -1134,9 +1141,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; @@ -1301,11 +1305,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); } @@ -2644,8 +2651,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(); @@ -3536,4 +3542,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); + } } |
