diff options
| author | 2024-05-16 17:58:11 +0000 | |
|---|---|---|
| committer | 2024-05-16 17:58:11 +0000 | |
| commit | 9cca183fd222802def957e1789dab6fcbf0eec01 (patch) | |
| tree | a30cbb542acba916156bca7851ceaa9d0af277bf /graphics/java | |
| parent | 382da488079cc67d4c6ead5cc2de44e8cbce5c26 (diff) | |
| parent | 91ab113544c3c08ac8d55564ed57879be45b7f9e (diff) | |
Merge "Support Color and ColorSpace on Ravenwood" into main
Diffstat (limited to 'graphics/java')
| -rw-r--r-- | graphics/java/android/graphics/Color.java | 3 | ||||
| -rw-r--r-- | graphics/java/android/graphics/ColorSpace.java | 16 | ||||
| -rw-r--r-- | graphics/java/android/graphics/Matrix.java | 48 |
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); |