Moved brightness from Lights to SF.
Test: manual.
Check that brightness works.
Fixes: 111435292
Change-Id: I9351fcc69b3cc217e5eeb7bc3f813a41ba9dc547
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 5e2aaae..9740168 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -63,6 +63,7 @@
import java.io.Closeable;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
+import java.util.Objects;
/**
* Handle to an on-screen Surface managed by the system compositor. The SurfaceControl is
@@ -196,6 +197,9 @@
private static native boolean nativeGetProtectedContentSupport();
private static native void nativeSetMetadata(long transactionObj, int key, Parcel data);
private static native void nativeSyncInputWindows(long transactionObj);
+ private static native boolean nativeGetDisplayBrightnessSupport(IBinder displayToken);
+ private static native boolean nativeSetDisplayBrightness(IBinder displayToken,
+ float brightness);
private final CloseGuard mCloseGuard = CloseGuard.get();
private String mName;
@@ -1958,6 +1962,47 @@
}
/**
+ * Returns whether brightness operations are supported on a display.
+ *
+ * @param displayToken
+ * The token for the display.
+ *
+ * @return Whether brightness operations are supported on the display.
+ *
+ * @hide
+ */
+ public static boolean getDisplayBrightnessSupport(IBinder displayToken) {
+ return nativeGetDisplayBrightnessSupport(displayToken);
+ }
+
+ /**
+ * Sets the brightness of a display.
+ *
+ * @param displayToken
+ * The token for the display whose brightness is set.
+ * @param brightness
+ * A number between 0.0f (minimum brightness) and 1.0f (maximum brightness), or -1.0f to
+ * turn the backlight off.
+ *
+ * @return Whether the method succeeded or not.
+ *
+ * @throws IllegalArgumentException if:
+ * - displayToken is null;
+ * - brightness is NaN or greater than 1.0f.
+ *
+ * @hide
+ */
+ public static boolean setDisplayBrightness(IBinder displayToken, float brightness) {
+ Objects.requireNonNull(displayToken);
+ if (Float.isNaN(brightness) || brightness > 1.0f
+ || (brightness < 0.0f && brightness != -1.0f)) {
+ throw new IllegalArgumentException("brightness must be a number between 0.0f and 1.0f,"
+ + " or -1 to turn the backlight off.");
+ }
+ return nativeSetDisplayBrightness(displayToken, brightness);
+ }
+
+ /**
* An atomic set of changes to a set of SurfaceControl.
*/
public static class Transaction implements Closeable {
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 89d908b..4a6c72b 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -1164,6 +1164,25 @@
}
}
+static jboolean nativeGetDisplayBrightnessSupport(JNIEnv* env, jclass clazz,
+ jobject displayTokenObject) {
+ sp<IBinder> displayToken(ibinderForJavaObject(env, displayTokenObject));
+ if (displayToken == nullptr) {
+ return JNI_FALSE;
+ }
+ return static_cast<jboolean>(SurfaceComposerClient::getDisplayBrightnessSupport(displayToken));
+}
+
+static jboolean nativeSetDisplayBrightness(JNIEnv* env, jclass clazz, jobject displayTokenObject,
+ jfloat brightness) {
+ sp<IBinder> displayToken(ibinderForJavaObject(env, displayTokenObject));
+ if (displayToken == nullptr) {
+ return JNI_FALSE;
+ }
+ status_t error = SurfaceComposerClient::setDisplayBrightness(displayToken, brightness);
+ return error == OK ? JNI_TRUE : JNI_FALSE;
+}
+
// ----------------------------------------------------------------------------
static const JNINativeMethod sSurfaceControlMethods[] = {
@@ -1308,7 +1327,11 @@
{"nativeSetGeometry", "(JJLandroid/graphics/Rect;Landroid/graphics/Rect;J)V",
(void*)nativeSetGeometry },
{"nativeSyncInputWindows", "(J)V",
- (void*)nativeSyncInputWindows }
+ (void*)nativeSyncInputWindows },
+ {"nativeGetDisplayBrightnessSupport", "(Landroid/os/IBinder;)Z",
+ (void*)nativeGetDisplayBrightnessSupport },
+ {"nativeSetDisplayBrightness", "(Landroid/os/IBinder;F)Z",
+ (void*)nativeSetDisplayBrightness },
};
int register_android_view_SurfaceControl(JNIEnv* env)