summaryrefslogtreecommitdiff
path: root/graphics/java
diff options
context:
space:
mode:
author Makoto Onuki <omakoto@google.com> 2024-05-16 17:58:11 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-05-16 17:58:11 +0000
commit9cca183fd222802def957e1789dab6fcbf0eec01 (patch)
treea30cbb542acba916156bca7851ceaa9d0af277bf /graphics/java
parent382da488079cc67d4c6ead5cc2de44e8cbce5c26 (diff)
parent91ab113544c3c08ac8d55564ed57879be45b7f9e (diff)
Merge "Support Color and ColorSpace on Ravenwood" into main
Diffstat (limited to 'graphics/java')
-rw-r--r--graphics/java/android/graphics/Color.java3
-rw-r--r--graphics/java/android/graphics/ColorSpace.java16
-rw-r--r--graphics/java/android/graphics/Matrix.java48
3 files changed, 17 insertions, 50 deletions
diff --git a/graphics/java/android/graphics/Color.java b/graphics/java/android/graphics/Color.java
index 0f2f8797b896..c1edafc16274 100644
--- a/graphics/java/android/graphics/Color.java
+++ b/graphics/java/android/graphics/Color.java
@@ -289,6 +289,9 @@ import java.util.function.DoubleUnaryOperator;
*/
@AnyThread
@SuppressAutoDoc
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
+@android.ravenwood.annotation.RavenwoodClassLoadHook(
+ android.ravenwood.annotation.RavenwoodClassLoadHook.LIBANDROID_LOADING_HOOK)
public class Color {
@ColorInt public static final int BLACK = 0xFF000000;
@ColorInt public static final int DKGRAY = 0xFF444444;
diff --git a/graphics/java/android/graphics/ColorSpace.java b/graphics/java/android/graphics/ColorSpace.java
index a2319a53a659..9284c0e5b928 100644
--- a/graphics/java/android/graphics/ColorSpace.java
+++ b/graphics/java/android/graphics/ColorSpace.java
@@ -135,6 +135,9 @@ import java.util.function.DoubleUnaryOperator;
@AnyThread
@SuppressWarnings("StaticInitializerReferencesSubClass")
@SuppressAutoDoc
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
+@android.ravenwood.annotation.RavenwoodClassLoadHook(
+ android.ravenwood.annotation.RavenwoodClassLoadHook.LIBANDROID_LOADING_HOOK)
public abstract class ColorSpace {
/**
* Standard CIE 1931 2° illuminant A, encoded in xyY.
@@ -2490,9 +2493,12 @@ public abstract class ColorSpace {
return mNativePtr;
}
- private static native long nativeGetNativeFinalizer();
- private static native long nativeCreate(float a, float b, float c, float d,
- float e, float f, float g, float[] xyz);
+ /** Need a nested class due to b/337329128. */
+ static class Native {
+ static native long nativeGetNativeFinalizer();
+ static native long nativeCreate(float a, float b, float c, float d,
+ float e, float f, float g, float[] xyz);
+ }
private static DoubleUnaryOperator generateOETF(TransferParameters function) {
if (function.isHLGish()) {
@@ -2959,7 +2965,7 @@ public abstract class ColorSpace {
// This mimics the old code that was in native.
float[] nativeTransform = adaptToIlluminantD50(mWhitePoint, mTransform);
- mNativePtr = nativeCreate((float) mTransferParameters.a,
+ mNativePtr = Native.nativeCreate((float) mTransferParameters.a,
(float) mTransferParameters.b,
(float) mTransferParameters.c,
(float) mTransferParameters.d,
@@ -2975,7 +2981,7 @@ public abstract class ColorSpace {
private static class NoImagePreloadHolder {
public static final NativeAllocationRegistry sRegistry = new NativeAllocationRegistry(
- ColorSpace.Rgb.class.getClassLoader(), nativeGetNativeFinalizer(), 0);
+ ColorSpace.Rgb.class.getClassLoader(), Native.nativeGetNativeFinalizer(), 0);
}
/**
diff --git a/graphics/java/android/graphics/Matrix.java b/graphics/java/android/graphics/Matrix.java
index fbb690c0b012..ebf90bc7a0d3 100644
--- a/graphics/java/android/graphics/Matrix.java
+++ b/graphics/java/android/graphics/Matrix.java
@@ -232,7 +232,7 @@ public class Matrix {
private static class NoImagePreloadHolder {
public static final NativeAllocationRegistry sRegistry =
NativeAllocationRegistry.createMalloced(
- Matrix.class.getClassLoader(), nGetNativeFinalizerWrapper());
+ Matrix.class.getClassLoader(), ExtraNatives.nGetNativeFinalizer());
}
private final long native_instance;
@@ -241,7 +241,7 @@ public class Matrix {
* Create an identity matrix
*/
public Matrix() {
- native_instance = nCreateWrapper(0);
+ native_instance = ExtraNatives.nCreate(0);
NoImagePreloadHolder.sRegistry.registerNativeAllocation(this, native_instance);
}
@@ -251,7 +251,7 @@ public class Matrix {
* @param src The matrix to copy into this matrix
*/
public Matrix(Matrix src) {
- native_instance = nCreateWrapper(src != null ? src.native_instance : 0);
+ native_instance = ExtraNatives.nCreate(src != null ? src.native_instance : 0);
NoImagePreloadHolder.sRegistry.registerNativeAllocation(this, native_instance);
}
@@ -849,40 +849,6 @@ public class Matrix {
return native_instance;
}
- /**
- * Wrapper method we use to switch to ExtraNatives.nCreate(src) only on Ravenwood.
- *
- * @see ExtraNatives
- */
- @android.ravenwood.annotation.RavenwoodReplace
- private static long nCreateWrapper(long src) {
- return nCreate(src);
- }
-
- private static long nCreateWrapper$ravenwood(long src) {
- return ExtraNatives.nCreate(src);
- }
-
- /**
- * Wrapper method we use to switch to ExtraNatives.nGetNativeFinalizer(src) only on Ravenwood.
- *
- * @see ExtraNatives
- */
- @android.ravenwood.annotation.RavenwoodReplace
- private static long nGetNativeFinalizerWrapper() {
- return nGetNativeFinalizer();
- }
-
- private static long nGetNativeFinalizerWrapper$ravenwood() {
- return ExtraNatives.nGetNativeFinalizer();
- }
-
- // ------------------ Regular JNI ------------------------
-
- private static native long nCreate(long nSrc_or_zero);
- private static native long nGetNativeFinalizer();
-
-
// ------------------ Fast JNI ------------------------
@FastNative
@@ -982,14 +948,6 @@ public class Matrix {
* There are two methods that are called by the static initializers (either directly or
* indirectly) in this class, namely nCreate() and nGetNativeFinalizer(). On Ravenwood
* these methods can't be on the Matrix class itself, so we use a nested class to host them.
- *
- * We still keep the original nCreate() method and call it on non-ravenwood environment,
- * in order to avoid problems in downstream (such as Android Studio).
- *
- * @see #nCreateWrapper(long)
- * @see #nGetNativeFinalizerWrapper()
- *
- * TODO(b/337110712) Clean it up somehow. (remove the original nCreate() and unify the code?)
*/
private static class ExtraNatives {
static native long nCreate(long nSrc_or_zero);