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

Commit 09c229e6 authored by Christine Franks's avatar Christine Franks
Browse files

Move global grayscale to ColorDisplayService

Bug: 111215474
Test: atest FrameworksServicesTests:ColorDisplayServiceTest
Change-Id: I9b72d53b2614f225422f15f3b4018383d75071cd
parent 150c46ef
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -1541,6 +1541,10 @@ package android.hardware.display {
    field public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessCorrection> CREATOR;
  }

  public final class ColorDisplayManager {
    method public boolean setSaturationLevel(int);
  }

  public final class DisplayManager {
    method public java.util.List<android.hardware.display.AmbientBrightnessDayStats> getAmbientBrightnessStats();
    method public android.hardware.display.BrightnessConfiguration getBrightnessConfiguration();
@@ -1549,7 +1553,7 @@ package android.hardware.display {
    method public android.util.Pair<float[], float[]> getMinimumBrightnessCurve();
    method public android.graphics.Point getStableDisplaySize();
    method public void setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration);
    method public void setSaturationLevel(float);
    method public deprecated void setSaturationLevel(float);
  }

}
+30 −1
Original line number Diff line number Diff line
@@ -16,7 +16,9 @@

package android.hardware.display;

import android.Manifest;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.content.Context;
import android.os.IBinder;
@@ -31,6 +33,7 @@ import com.android.internal.R;
 *
 * @hide
 */
@SystemApi
@SystemService(Context.COLOR_DISPLAY_SERVICE)
public final class ColorDisplayManager {

@@ -48,13 +51,29 @@ public final class ColorDisplayManager {
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
    @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
    public boolean isDeviceColorManaged() {
        return mManager.isDeviceColorManaged();
    }

    /**
     * Set the level of color saturation to apply to the display.
     *
     * @param saturationLevel 0-100 (inclusive), where 100 is full saturation
     * @return whether the saturation level change was applied successfully
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
    public boolean setSaturationLevel(int saturationLevel) {
        return mManager.setSaturationLevel(saturationLevel);
    }

    /**
     * Returns {@code true} if Night Display is supported by the device.
     *
     * @hide
     */
    public static boolean isNightDisplayAvailable(Context context) {
        return context.getResources().getBoolean(R.bool.config_nightDisplayAvailable);
@@ -62,6 +81,8 @@ public final class ColorDisplayManager {

    /**
     * Returns {@code true} if display white balance is supported by the device.
     *
     * @hide
     */
    public static boolean isDisplayWhiteBalanceAvailable(Context context) {
        return context.getResources().getBoolean(R.bool.config_displayWhiteBalanceAvailable);
@@ -99,5 +120,13 @@ public final class ColorDisplayManager {
                throw e.rethrowFromSystemServer();
            }
        }

        boolean setSaturationLevel(int saturationLevel) {
            try {
                return mCdm.setSaturationLevel(saturationLevel);
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
        }
    }
}
+6 −1
Original line number Diff line number Diff line
@@ -563,11 +563,16 @@ public final class DisplayManager {
     * 0 produces a grayscale image, 1 is normal.
     *
     * @hide
     * @deprecated use {@link ColorDisplayManager#setSaturationLevel(int)}.
     */
    @SystemApi
    @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_SATURATION)
    public void setSaturationLevel(float level) {
        mGlobal.setSaturationLevel(level);
        if (level < 0f || level > 1f) {
            throw new IllegalArgumentException("Saturation level must be between 0 and 1");
        }
        final ColorDisplayManager cdm = mContext.getSystemService(ColorDisplayManager.class);
        cdm.setSaturationLevel(Math.round(level * 100f));
    }

    /**
+0 −11
Original line number Diff line number Diff line
@@ -394,17 +394,6 @@ public final class DisplayManagerGlobal {
        }
    }

    /**
     * Set the level of color saturation to apply to the display.
     */
    public void setSaturationLevel(float level) {
        try {
            mDm.setSaturationLevel(level);
        } catch (RemoteException ex) {
            throw ex.rethrowFromSystemServer();
        }
    }

    public VirtualDisplay createVirtualDisplay(Context context, MediaProjection projection,
            String name, int width, int height, int densityDpi, Surface surface, int flags,
            VirtualDisplay.Callback callback, Handler handler, String uniqueId) {
+2 −0
Original line number Diff line number Diff line
@@ -19,4 +19,6 @@ package android.hardware.display;
/** @hide */
interface IColorDisplayManager {
    boolean isDeviceColorManaged();

    boolean setSaturationLevel(int saturationLevel);
}
 No newline at end of file
Loading