diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index da582c5b4b2f6..b5bbc75373919 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -221,6 +221,8 @@ public final class SurfaceControl implements Parcelable { @DataSpace.NamedDataSpace int dataSpace); private static native void nativeSetDamageRegion(long transactionObj, long nativeObject, Region region); + private static native void nativeSetDimmingEnabled(long transactionObj, long nativeObject, + boolean dimmingEnabled); private static native void nativeOverrideHdrTypes(IBinder displayToken, int[] modes); @@ -3837,6 +3839,27 @@ public final class SurfaceControl implements Parcelable { return this; } + /** + * Set if the layer can be dimmed. + * + *
Dimming is to adjust brightness of the layer. + * Default value is {@code true}, which means the layer can be dimmed. + * Disabling dimming means the brightness of the layer can not be changed, i.e., + * keep the white point for the layer same as the display brightness.
+ * + * @param sc The SurfaceControl on which to enable or disable dimming. + * @param dimmingEnabled The dimming flag. + * @return this. + * + * @hide + */ + public @NonNull Transaction setDimmingEnabled(@NonNull SurfaceControl sc, + boolean dimmingEnabled) { + checkPreconditions(sc); + nativeSetDimmingEnabled(mNativeObject, sc.mNativeObject, dimmingEnabled); + return this; + } + /** * Set the color space for the SurfaceControl. The supported color spaces are SRGB * and Display P3, other color spaces will be treated as SRGB. This can only be used for diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 39f192b662eed..518fc09dee5aa 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -851,6 +851,14 @@ static void nativeSetDamageRegion(JNIEnv* env, jclass clazz, jlong transactionOb transaction->setSurfaceDamageRegion(surfaceControl, region); } +static void nativeSetDimmingEnabled(JNIEnv* env, jclass clazz, jlong transactionObj, + jlong nativeObject, jboolean dimmingEnabled) { + auto transaction = reinterpret_cast