summaryrefslogtreecommitdiff
path: root/core/java/android/view/SurfaceControl.java
diff options
context:
space:
mode:
authorRob Carr <racarr@google.com>2021-04-20 00:42:30 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-04-20 00:42:30 +0000
commit00019e2e569469ed4e72beb61d4df9089783ec70 (patch)
tree8c3c1ad221ae24f3fe8c2e2bf037f7e3204eaa6d /core/java/android/view/SurfaceControl.java
parent04029df9b89f1bca3d14010e272c6dd7f21ce8fb (diff)
parent660a6679d97d04b732b4317d38902320da9167ee (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.java27
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);
+ }
}