Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0d0eb003 authored by Sally Qi's avatar Sally Qi Committed by Automerger Merge Worker
Browse files

Merge "Disable HDR dimming when screen rotates." into tm-dev am: acdf1d12

parents b0952668 acdf1d12
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -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.
         *
         * <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
+10 −1
Original line number Diff line number Diff line
@@ -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);
@@ -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",
+4 −0
Original line number Diff line number Diff line
@@ -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);