Loading core/java/android/view/SurfaceControl.java +21 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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); } Loading Loading @@ -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(); Loading Loading @@ -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); } } core/jni/android_view_SurfaceControl.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -394,6 +394,14 @@ static void nativeDisconnect(JNIEnv* env, jclass clazz, jlong nativeObject) { } } static void nativeSetDefaultBufferSize(JNIEnv* env, jclass clazz, jlong nativeObject, jint width, jint height) { SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject); if (ctrl != NULL) { ctrl->updateDefaultBufferSize(width, height); } } static Rect rectFromObj(JNIEnv* env, jobject rectObj) { int left = env->GetIntField(rectObj, gRectClassInfo.left); int top = env->GetIntField(rectObj, gRectClassInfo.top); Loading Loading @@ -1771,6 +1779,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeRelease }, {"nativeDisconnect", "(J)V", (void*)nativeDisconnect }, {"nativeUpdateDefaultBufferSize", "(JII)V", (void*)nativeSetDefaultBufferSize}, {"nativeCreateTransaction", "()J", (void*)nativeCreateTransaction }, {"nativeApplyTransaction", "(JZ)V", Loading Loading
core/java/android/view/SurfaceControl.java +21 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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); } Loading Loading @@ -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(); Loading Loading @@ -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); } }
core/jni/android_view_SurfaceControl.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -394,6 +394,14 @@ static void nativeDisconnect(JNIEnv* env, jclass clazz, jlong nativeObject) { } } static void nativeSetDefaultBufferSize(JNIEnv* env, jclass clazz, jlong nativeObject, jint width, jint height) { SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject); if (ctrl != NULL) { ctrl->updateDefaultBufferSize(width, height); } } static Rect rectFromObj(JNIEnv* env, jobject rectObj) { int left = env->GetIntField(rectObj, gRectClassInfo.left); int top = env->GetIntField(rectObj, gRectClassInfo.top); Loading Loading @@ -1771,6 +1779,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeRelease }, {"nativeDisconnect", "(J)V", (void*)nativeDisconnect }, {"nativeUpdateDefaultBufferSize", "(JII)V", (void*)nativeSetDefaultBufferSize}, {"nativeCreateTransaction", "()J", (void*)nativeCreateTransaction }, {"nativeApplyTransaction", "(JZ)V", Loading