diff options
| author | Owen Lin <owenlin@google.com> | 2010-09-29 22:57:08 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-09-29 22:57:08 -0700 |
| commit | a9164cbb3092d4edebd9f20e7da533e169e8d3c6 (patch) | |
| tree | f29c132f6bf3e55c96c49163b811be6663c6316a | |
| parent | 8ff07224535602884e5e92b954bb3e38b67c7c19 (diff) | |
| parent | 0ab9851308c02928c34e7261c4d4521c07e64f0e (diff) | |
| download | frameworks_base-a9164cbb3092d4edebd9f20e7da533e169e8d3c6.zip frameworks_base-a9164cbb3092d4edebd9f20e7da533e169e8d3c6.tar.gz frameworks_base-a9164cbb3092d4edebd9f20e7da533e169e8d3c6.tar.bz2 | |
Merge "Fix a initialization bug in BitmapRegionDecoder."
| -rw-r--r-- | core/jni/android/graphics/BitmapRegionDecoder.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/core/jni/android/graphics/BitmapRegionDecoder.cpp b/core/jni/android/graphics/BitmapRegionDecoder.cpp index 4503852..f700791 100644 --- a/core/jni/android/graphics/BitmapRegionDecoder.cpp +++ b/core/jni/android/graphics/BitmapRegionDecoder.cpp @@ -297,9 +297,25 @@ static JNINativeMethod gBitmapRegionDecoderMethods[] = { #define kClassPathName "android/graphics/BitmapRegionDecoder" +static jclass make_globalref(JNIEnv* env, const char classname[]) { + jclass c = env->FindClass(classname); + SkASSERT(c); + return (jclass)env->NewGlobalRef(c); +} + +static jfieldID getFieldIDCheck(JNIEnv* env, jclass clazz, + const char fieldname[], const char type[]) { + jfieldID id = env->GetFieldID(clazz, fieldname, type); + SkASSERT(id); + return id; +} + int register_android_graphics_BitmapRegionDecoder(JNIEnv* env); int register_android_graphics_BitmapRegionDecoder(JNIEnv* env) { + + gFileDescriptor_class = make_globalref(env, "java/io/FileDescriptor"); + gFileDescriptor_descriptor = getFieldIDCheck(env, gFileDescriptor_class, "descriptor", "I"); return android::AndroidRuntime::registerNativeMethods(env, kClassPathName, gBitmapRegionDecoderMethods, SK_ARRAY_COUNT(gBitmapRegionDecoderMethods)); } |
