diff options
| author | 2024-07-31 12:48:57 +0200 | |
|---|---|---|
| committer | 2024-07-31 13:54:22 +0200 | |
| commit | 4e00a7a3311ca6a28bd1b2caf6defac542ff0dc1 (patch) | |
| tree | 151b76acf71707fdd556966457b3d53a86ac2885 | |
| parent | bb01203246dbd072bf0f659a2ad7394881e531dd (diff) | |
EdgeExtension: Add SurfaceControl.Transaction API
Bug: 322036393
Test: atest TransitionAnimationTests
Flag: com.android.graphics.libgui.flags.edge_extension_shader
Change-Id: Ic4ede2185f97af433c8e523637f14aa9df4cb73f
| -rw-r--r-- | core/java/android/view/SurfaceControl.java | 16 | ||||
| -rw-r--r-- | core/jni/android_view_SurfaceControl.cpp | 17 |
2 files changed, 33 insertions, 0 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 634469dd52ff..a7641c07bb90 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -164,6 +164,9 @@ public final class SurfaceControl implements Parcelable { float width, float height, float vecX, float vecY, float maxStretchAmountX, float maxStretchAmountY, float childRelativeLeft, float childRelativeTop, float childRelativeRight, float childRelativeBottom); + private static native void nativeSetEdgeExtensionEffect(long transactionObj, long nativeObj, + boolean leftEdge, boolean rightEdge, + boolean topEdge, boolean bottomEdge); private static native void nativeSetTrustedOverlay(long transactionObj, long nativeObject, int isTrustedOverlay); private static native void nativeSetDropInputMode( @@ -3513,6 +3516,19 @@ public final class SurfaceControl implements Parcelable { /** * @hide */ + public Transaction setEdgeExtensionEffect(SurfaceControl sc, int edge) { + checkPreconditions(sc); + + nativeSetEdgeExtensionEffect( + mNativeObject, sc.mNativeObject, + (edge & WindowInsets.Side.LEFT) != 0, (edge & WindowInsets.Side.RIGHT) != 0, + (edge & WindowInsets.Side.TOP) != 0, (edge & WindowInsets.Side.BOTTOM) != 0); + return this; + } + + /** + * @hide + */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.O) public Transaction setLayerStack(SurfaceControl sc, int layerStack) { checkPreconditions(sc); diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 9ce76583517b..0f531641903a 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -22,6 +22,7 @@ #include <android/graphics/properties.h> #include <android/graphics/region.h> #include <android/gui/BnWindowInfosReportedListener.h> +#include <android/gui/EdgeExtensionParameters.h> #include <android/gui/JankData.h> #include <android/hardware/display/IDeviceProductInfoConstants.h> #include <android/os/IInputConstants.h> @@ -799,6 +800,20 @@ static void nativeSetStretchEffect(JNIEnv* env, jclass clazz, jlong transactionO transaction->setStretchEffect(ctrl, stretch); } +static void nativeSetEdgeExtensionEffect(JNIEnv* env, jclass clazz, jlong transactionObj, + jlong nativeObj, jboolean leftEdge, jboolean rightEdge, + jboolean topEdge, jboolean bottomEdge) { + auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); + auto* const ctrl = reinterpret_cast<SurfaceControl*>(nativeObj); + + auto effect = gui::EdgeExtensionParameters(); + effect.extendLeft = leftEdge; + effect.extendRight = rightEdge; + effect.extendTop = topEdge; + effect.extendBottom = bottomEdge; + transaction->setEdgeExtensionEffect(ctrl, effect); +} + static void nativeSetFlags(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jint flags, jint mask) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); @@ -2340,6 +2355,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetBlurRegions }, {"nativeSetStretchEffect", "(JJFFFFFFFFFF)V", (void*) nativeSetStretchEffect }, + {"nativeSetEdgeExtensionEffect", "(JJZZZZ)V", + (void*) nativeSetEdgeExtensionEffect }, {"nativeSetShadowRadius", "(JJF)V", (void*)nativeSetShadowRadius }, {"nativeSetFrameRate", "(JJFII)V", |