summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Marzia Favaro <marziana@google.com> 2024-07-31 12:48:57 +0200
committer Robin Lee <rgl@google.com> 2024-07-31 13:54:22 +0200
commit4e00a7a3311ca6a28bd1b2caf6defac542ff0dc1 (patch)
tree151b76acf71707fdd556966457b3d53a86ac2885
parentbb01203246dbd072bf0f659a2ad7394881e531dd (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.java16
-rw-r--r--core/jni/android_view_SurfaceControl.cpp17
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",