diff --git a/core/jni/android/graphics/SurfaceTexture.cpp b/core/jni/android/graphics/SurfaceTexture.cpp index 00996730cb70d..2b1da25c632d0 100644 --- a/core/jni/android/graphics/SurfaceTexture.cpp +++ b/core/jni/android/graphics/SurfaceTexture.cpp @@ -34,6 +34,7 @@ #include "jni.h" #include "JNIHelp.h" +#include "ScopedLocalRef.h" // ---------------------------------------------------------------------------- @@ -385,7 +386,6 @@ static jboolean SurfaceTexture_isReleased(JNIEnv* env, jobject thiz) // ---------------------------------------------------------------------------- static const JNINativeMethod gSurfaceTextureMethods[] = { - {"nativeClassInit", "()V", (void*)SurfaceTexture_classInit }, {"nativeInit", "(ZIZLjava/lang/ref/WeakReference;)V", (void*)SurfaceTexture_init }, {"nativeFinalize", "()V", (void*)SurfaceTexture_finalize }, {"nativeSetDefaultBufferSize", "(II)V", (void*)SurfaceTexture_setDefaultBufferSize }, @@ -401,6 +401,10 @@ static const JNINativeMethod gSurfaceTextureMethods[] = { int register_android_graphics_SurfaceTexture(JNIEnv* env) { + // Cache some fields. + ScopedLocalRef klass(env, FindClassOrDie(env, kSurfaceTextureClassPathName)); + SurfaceTexture_classInit(env, klass.get()); + return RegisterMethodsOrDie(env, kSurfaceTextureClassPathName, gSurfaceTextureMethods, NELEM(gSurfaceTextureMethods)); } diff --git a/graphics/java/android/graphics/SurfaceTexture.java b/graphics/java/android/graphics/SurfaceTexture.java index efb46b90e399e..90bdd81a9d361 100644 --- a/graphics/java/android/graphics/SurfaceTexture.java +++ b/graphics/java/android/graphics/SurfaceTexture.java @@ -403,11 +403,4 @@ public class SurfaceTexture { private native int nativeGetQueuedCount(); private native void nativeRelease(); private native boolean nativeIsReleased(); - - /* - * We use a class initializer to allow the native code to cache some - * field offsets. - */ - private static native void nativeClassInit(); - static { nativeClassInit(); } }