Loading core/java/android/view/SurfaceControl.java +23 −0 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -3837,6 +3839,27 @@ public final class SurfaceControl implements Parcelable { return this; } /** * Set if the layer can be dimmed. * * <p>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.</p> * * @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 Loading core/jni/android_view_SurfaceControl.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -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<SurfaceComposerClient::Transaction*>(transactionObj); SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl*>(nativeObject); transaction->setDimmingEnabled(ctrl, dimmingEnabled); } static void nativeSetAlpha(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jfloat alpha) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); Loading Loading @@ -2097,6 +2105,7 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetTransparentRegionHint }, {"nativeSetDamageRegion", "(JJLandroid/graphics/Region;)V", (void*)nativeSetDamageRegion }, {"nativeSetDimmingEnabled", "(JJZ)V", (void*)nativeSetDimmingEnabled }, {"nativeSetAlpha", "(JJF)V", (void*)nativeSetAlpha }, {"nativeSetColor", "(JJ[F)V", Loading services/core/java/com/android/server/wm/ScreenRotationAnimation.java +4 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,10 @@ class ScreenRotationAnimation { t.setLayer(mScreenshotLayer, SCREEN_FREEZE_LAYER_BASE); t.reparent(mBackColorSurface, displayContent.getSurfaceControl()); // If hdr layers are on-screen, e.g. picture-in-picture mode, the screenshot of // rotation animation is an sdr image containing tone-mapping hdr content, then // disable dimming effect to get avoid of hdr content being dimmed during animation. t.setDimmingEnabled(mScreenshotLayer, false); t.setLayer(mBackColorSurface, -1); t.setColor(mBackColorSurface, new float[]{mStartLuma, mStartLuma, mStartLuma}); t.setAlpha(mBackColorSurface, 1); Loading Loading
core/java/android/view/SurfaceControl.java +23 −0 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -3837,6 +3839,27 @@ public final class SurfaceControl implements Parcelable { return this; } /** * Set if the layer can be dimmed. * * <p>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.</p> * * @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 Loading
core/jni/android_view_SurfaceControl.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -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<SurfaceComposerClient::Transaction*>(transactionObj); SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl*>(nativeObject); transaction->setDimmingEnabled(ctrl, dimmingEnabled); } static void nativeSetAlpha(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jfloat alpha) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); Loading Loading @@ -2097,6 +2105,7 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetTransparentRegionHint }, {"nativeSetDamageRegion", "(JJLandroid/graphics/Region;)V", (void*)nativeSetDamageRegion }, {"nativeSetDimmingEnabled", "(JJZ)V", (void*)nativeSetDimmingEnabled }, {"nativeSetAlpha", "(JJF)V", (void*)nativeSetAlpha }, {"nativeSetColor", "(JJ[F)V", Loading
services/core/java/com/android/server/wm/ScreenRotationAnimation.java +4 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,10 @@ class ScreenRotationAnimation { t.setLayer(mScreenshotLayer, SCREEN_FREEZE_LAYER_BASE); t.reparent(mBackColorSurface, displayContent.getSurfaceControl()); // If hdr layers are on-screen, e.g. picture-in-picture mode, the screenshot of // rotation animation is an sdr image containing tone-mapping hdr content, then // disable dimming effect to get avoid of hdr content being dimmed during animation. t.setDimmingEnabled(mScreenshotLayer, false); t.setLayer(mBackColorSurface, -1); t.setColor(mBackColorSurface, new float[]{mStartLuma, mStartLuma, mStartLuma}); t.setAlpha(mBackColorSurface, 1); Loading