Loading core/jni/android/graphics/BitmapFactory.cpp +27 −44 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include "CreateJavaOutputStreamAdaptor.h" #include "AutoDecodeCancel.h" #include "Utils.h" #include "JNIHelp.h" #include <android_runtime/AndroidRuntime.h> #include <utils/Asset.h> Loading @@ -20,7 +21,6 @@ #include <sys/mman.h> #include <sys/stat.h> jclass gOptions_class; jfieldID gOptions_justBoundsFieldID; jfieldID gOptions_sampleSizeFieldID; jfieldID gOptions_configFieldID; Loading @@ -34,12 +34,8 @@ jfieldID gOptions_heightFieldID; jfieldID gOptions_mimeFieldID; jfieldID gOptions_mCancelID; jfieldID gOptions_bitmapFieldID; jclass gBitmap_class; jfieldID gBitmap_nativeBitmapFieldID; static jclass gFileDescriptor_class; static jfieldID gFileDescriptor_descriptor; #if 0 #define TRACE_BITMAP(code) code #else Loading Loading @@ -298,8 +294,7 @@ static jobject nativeDecodeFileDescriptor(JNIEnv* env, jobject clazz, jobject bitmapFactoryOptions) { NPE_CHECK_RETURN_ZERO(env, fileDescriptor); jint descriptor = env->GetIntField(fileDescriptor, gFileDescriptor_descriptor); jint descriptor = jniGetFDFromFileDescriptor(env, fileDescriptor); bool isPurgeable = optionsPurgeable(env, bitmapFactoryOptions); bool isShareable = optionsShareable(env, bitmapFactoryOptions); Loading Loading @@ -460,7 +455,7 @@ static void nativeSetDefaultConfig(JNIEnv* env, jobject, int nativeConfig) { } static jboolean nativeIsSeekable(JNIEnv* env, jobject, jobject fileDescriptor) { jint descriptor = env->GetIntField(fileDescriptor, gFileDescriptor_descriptor); jint descriptor = jniGetFDFromFileDescriptor(env, fileDescriptor); return ::lseek64(descriptor, 0, SEEK_CUR) != -1 ? JNI_TRUE : JNI_FALSE; } Loading Loading @@ -504,12 +499,6 @@ static JNINativeMethod gOptionsMethods[] = { { "requestCancel", "()V", (void*)nativeRequestCancel } }; 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); Loading @@ -517,35 +506,29 @@ static jfieldID getFieldIDCheck(JNIEnv* env, jclass clazz, return id; } #define kClassPathName "android/graphics/BitmapFactory" #define RETURN_ERR_IF_NULL(value) \ do { if (!(value)) { assert(0); return -1; } } while (false) int register_android_graphics_BitmapFactory(JNIEnv* env); int register_android_graphics_BitmapFactory(JNIEnv* env) { gOptions_class = make_globalref(env, "android/graphics/BitmapFactory$Options"); gOptions_bitmapFieldID = getFieldIDCheck(env, gOptions_class, "inBitmap", jclass options_class = env->FindClass("android/graphics/BitmapFactory$Options"); SkASSERT(options_class); gOptions_bitmapFieldID = getFieldIDCheck(env, options_class, "inBitmap", "Landroid/graphics/Bitmap;"); gOptions_justBoundsFieldID = getFieldIDCheck(env, gOptions_class, "inJustDecodeBounds", "Z"); gOptions_sampleSizeFieldID = getFieldIDCheck(env, gOptions_class, "inSampleSize", "I"); gOptions_configFieldID = getFieldIDCheck(env, gOptions_class, "inPreferredConfig", gOptions_justBoundsFieldID = getFieldIDCheck(env, options_class, "inJustDecodeBounds", "Z"); gOptions_sampleSizeFieldID = getFieldIDCheck(env, options_class, "inSampleSize", "I"); gOptions_configFieldID = getFieldIDCheck(env, options_class, "inPreferredConfig", "Landroid/graphics/Bitmap$Config;"); gOptions_mutableFieldID = getFieldIDCheck(env, gOptions_class, "inMutable", "Z"); gOptions_ditherFieldID = getFieldIDCheck(env, gOptions_class, "inDither", "Z"); gOptions_purgeableFieldID = getFieldIDCheck(env, gOptions_class, "inPurgeable", "Z"); gOptions_shareableFieldID = getFieldIDCheck(env, gOptions_class, "inInputShareable", "Z"); gOptions_preferQualityOverSpeedFieldID = getFieldIDCheck(env, gOptions_class, gOptions_mutableFieldID = getFieldIDCheck(env, options_class, "inMutable", "Z"); gOptions_ditherFieldID = getFieldIDCheck(env, options_class, "inDither", "Z"); gOptions_purgeableFieldID = getFieldIDCheck(env, options_class, "inPurgeable", "Z"); gOptions_shareableFieldID = getFieldIDCheck(env, options_class, "inInputShareable", "Z"); gOptions_preferQualityOverSpeedFieldID = getFieldIDCheck(env, options_class, "inPreferQualityOverSpeed", "Z"); gOptions_widthFieldID = getFieldIDCheck(env, gOptions_class, "outWidth", "I"); gOptions_heightFieldID = getFieldIDCheck(env, gOptions_class, "outHeight", "I"); gOptions_mimeFieldID = getFieldIDCheck(env, gOptions_class, "outMimeType", "Ljava/lang/String;"); gOptions_mCancelID = getFieldIDCheck(env, gOptions_class, "mCancel", "Z"); gOptions_widthFieldID = getFieldIDCheck(env, options_class, "outWidth", "I"); gOptions_heightFieldID = getFieldIDCheck(env, options_class, "outHeight", "I"); gOptions_mimeFieldID = getFieldIDCheck(env, options_class, "outMimeType", "Ljava/lang/String;"); gOptions_mCancelID = getFieldIDCheck(env, options_class, "mCancel", "Z"); gBitmap_class = make_globalref(env, "android/graphics/Bitmap"); gBitmap_nativeBitmapFieldID = getFieldIDCheck(env, gBitmap_class, "mNativeBitmap", "I"); gFileDescriptor_class = make_globalref(env, "java/io/FileDescriptor"); gFileDescriptor_descriptor = getFieldIDCheck(env, gFileDescriptor_class, "descriptor", "I"); jclass bitmap_class = env->FindClass("android/graphics/Bitmap"); SkASSERT(bitmap_class); gBitmap_nativeBitmapFieldID = getFieldIDCheck(env, bitmap_class, "mNativeBitmap", "I"); int ret = AndroidRuntime::registerNativeMethods(env, "android/graphics/BitmapFactory$Options", Loading @@ -554,6 +537,6 @@ int register_android_graphics_BitmapFactory(JNIEnv* env) { if (ret) { return ret; } return android::AndroidRuntime::registerNativeMethods(env, kClassPathName, return android::AndroidRuntime::registerNativeMethods(env, "android/graphics/BitmapFactory", gMethods, SK_ARRAY_COUNT(gMethods)); } core/jni/android/graphics/BitmapRegionDecoder.cpp +2 −22 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include "SkBitmapRegionDecoder.h" #include "CreateJavaOutputStreamAdaptor.h" #include "Utils.h" #include "JNIHelp.h" #include <android_runtime/AndroidRuntime.h> #include "android_util_Binder.h" Loading @@ -39,9 +40,6 @@ #include <utils/Asset.h> #include <sys/stat.h> static jclass gFileDescriptor_class; static jfieldID gFileDescriptor_descriptor; #if 0 #define TRACE_BITMAP(code) code #else Loading Loading @@ -111,8 +109,7 @@ static jobject nativeNewInstanceFromFileDescriptor(JNIEnv* env, jobject clazz, jobject fileDescriptor, jboolean isShareable) { NPE_CHECK_RETURN_ZERO(env, fileDescriptor); jint descriptor = env->GetIntField(fileDescriptor, gFileDescriptor_descriptor); jint descriptor = jniGetFDFromFileDescriptor(env, fileDescriptor); SkStream *stream = NULL; struct stat fdStat; int newFD; Loading Loading @@ -300,25 +297,8 @@ 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)); } core/jni/android_backup_BackupDataInput.cpp +2 −15 Original line number Diff line number Diff line Loading @@ -25,9 +25,6 @@ namespace android { // java.io.FileDescriptor static jfieldID s_descriptorField = 0; // android.app.backup.BackupDataInput$EntityHeader static jfieldID s_keyField = 0; static jfieldID s_dataSizeField = 0; Loading @@ -35,9 +32,7 @@ static jfieldID s_dataSizeField = 0; static int ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor) { int err; int fd = env->GetIntField(fileDescriptor, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); if (fd == -1) { return NULL; } Loading Loading @@ -140,15 +135,7 @@ int register_android_backup_BackupDataInput(JNIEnv* env) { //LOGD("register_android_backup_BackupDataInput"); jclass clazz; clazz = env->FindClass("java/io/FileDescriptor"); LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); LOG_FATAL_IF(s_descriptorField == NULL, "Unable to find descriptor field in java.io.FileDescriptor"); clazz = env->FindClass("android/app/backup/BackupDataInput$EntityHeader"); jclass clazz = env->FindClass("android/app/backup/BackupDataInput$EntityHeader"); LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupDataInput.EntityHeader"); s_keyField = env->GetFieldID(clazz, "key", "Ljava/lang/String;"); LOG_FATAL_IF(s_keyField == NULL, Loading core/jni/android_backup_BackupDataOutput.cpp +1 −14 Original line number Diff line number Diff line Loading @@ -25,14 +25,10 @@ namespace android { static jfieldID s_descriptorField = 0; static int ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor) { int err; int fd = env->GetIntField(fileDescriptor, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); if (fd == -1) { return NULL; } Loading Loading @@ -112,15 +108,6 @@ static const JNINativeMethod g_methods[] = { int register_android_backup_BackupDataOutput(JNIEnv* env) { //LOGD("register_android_backup_BackupDataOutput"); jclass clazz; clazz = env->FindClass("java/io/FileDescriptor"); LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); LOG_FATAL_IF(s_descriptorField == NULL, "Unable to find descriptor field in java.io.FileDescriptor"); return AndroidRuntime::registerNativeMethods(env, "android/app/backup/BackupDataOutput", g_methods, NELEM(g_methods)); } Loading core/jni/android_backup_BackupHelperDispatcher.cpp +7 −22 Original line number Diff line number Diff line Loading @@ -37,8 +37,6 @@ struct chunk_header_v1 { int nameLength; // not including the NULL terminator, which is not written to the file }; // java.io.FileDescriptor static jfieldID s_descriptorField = 0; static jfieldID s_chunkSizeField = 0; static jfieldID s_keyPrefixField = 0; Loading @@ -46,12 +44,11 @@ static int readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj) { chunk_header_v1 flattenedHeader; int fd; ssize_t amt; String8 keyPrefix; char* buf; fd = env->GetIntField(fdObj, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fdObj); amt = read(fd, &flattenedHeader.headerSize, sizeof(flattenedHeader.headerSize)); if (amt != sizeof(flattenedHeader.headerSize)) { Loading Loading @@ -128,9 +125,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj) static int skipChunk_native(JNIEnv* env, jobject clazz, jobject fdObj, jint bytesToSkip) { int fd; fd = env->GetIntField(fdObj, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fdObj); lseek(fd, bytesToSkip, SEEK_CUR); Loading @@ -152,9 +147,8 @@ allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdO int nameLength; int namePadding; int headerSize; int fd; fd = env->GetIntField(fdObj, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fdObj); nameObj = (jstring)env->GetObjectField(headerObj, s_keyPrefixField); Loading @@ -175,13 +169,12 @@ writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj, { int err; chunk_header_v1 header; int fd; int namePadding; int prevPos; jstring nameObj; const char* buf; fd = env->GetIntField(fdObj, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fdObj); prevPos = lseek(fd, 0, SEEK_CUR); nameObj = (jstring)env->GetObjectField(headerObj, s_keyPrefixField); Loading Loading @@ -234,15 +227,7 @@ static const JNINativeMethod g_methods[] = { int register_android_backup_BackupHelperDispatcher(JNIEnv* env) { jclass clazz; clazz = env->FindClass("java/io/FileDescriptor"); LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); LOG_FATAL_IF(s_descriptorField == NULL, "Unable to find descriptor field in java.io.FileDescriptor"); clazz = env->FindClass("android/app/backup/BackupHelperDispatcher$Header"); jclass clazz = env->FindClass("android/app/backup/BackupHelperDispatcher$Header"); LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupHelperDispatcher.Header"); s_chunkSizeField = env->GetFieldID(clazz, "chunkSize", "I"); Loading Loading
core/jni/android/graphics/BitmapFactory.cpp +27 −44 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include "CreateJavaOutputStreamAdaptor.h" #include "AutoDecodeCancel.h" #include "Utils.h" #include "JNIHelp.h" #include <android_runtime/AndroidRuntime.h> #include <utils/Asset.h> Loading @@ -20,7 +21,6 @@ #include <sys/mman.h> #include <sys/stat.h> jclass gOptions_class; jfieldID gOptions_justBoundsFieldID; jfieldID gOptions_sampleSizeFieldID; jfieldID gOptions_configFieldID; Loading @@ -34,12 +34,8 @@ jfieldID gOptions_heightFieldID; jfieldID gOptions_mimeFieldID; jfieldID gOptions_mCancelID; jfieldID gOptions_bitmapFieldID; jclass gBitmap_class; jfieldID gBitmap_nativeBitmapFieldID; static jclass gFileDescriptor_class; static jfieldID gFileDescriptor_descriptor; #if 0 #define TRACE_BITMAP(code) code #else Loading Loading @@ -298,8 +294,7 @@ static jobject nativeDecodeFileDescriptor(JNIEnv* env, jobject clazz, jobject bitmapFactoryOptions) { NPE_CHECK_RETURN_ZERO(env, fileDescriptor); jint descriptor = env->GetIntField(fileDescriptor, gFileDescriptor_descriptor); jint descriptor = jniGetFDFromFileDescriptor(env, fileDescriptor); bool isPurgeable = optionsPurgeable(env, bitmapFactoryOptions); bool isShareable = optionsShareable(env, bitmapFactoryOptions); Loading Loading @@ -460,7 +455,7 @@ static void nativeSetDefaultConfig(JNIEnv* env, jobject, int nativeConfig) { } static jboolean nativeIsSeekable(JNIEnv* env, jobject, jobject fileDescriptor) { jint descriptor = env->GetIntField(fileDescriptor, gFileDescriptor_descriptor); jint descriptor = jniGetFDFromFileDescriptor(env, fileDescriptor); return ::lseek64(descriptor, 0, SEEK_CUR) != -1 ? JNI_TRUE : JNI_FALSE; } Loading Loading @@ -504,12 +499,6 @@ static JNINativeMethod gOptionsMethods[] = { { "requestCancel", "()V", (void*)nativeRequestCancel } }; 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); Loading @@ -517,35 +506,29 @@ static jfieldID getFieldIDCheck(JNIEnv* env, jclass clazz, return id; } #define kClassPathName "android/graphics/BitmapFactory" #define RETURN_ERR_IF_NULL(value) \ do { if (!(value)) { assert(0); return -1; } } while (false) int register_android_graphics_BitmapFactory(JNIEnv* env); int register_android_graphics_BitmapFactory(JNIEnv* env) { gOptions_class = make_globalref(env, "android/graphics/BitmapFactory$Options"); gOptions_bitmapFieldID = getFieldIDCheck(env, gOptions_class, "inBitmap", jclass options_class = env->FindClass("android/graphics/BitmapFactory$Options"); SkASSERT(options_class); gOptions_bitmapFieldID = getFieldIDCheck(env, options_class, "inBitmap", "Landroid/graphics/Bitmap;"); gOptions_justBoundsFieldID = getFieldIDCheck(env, gOptions_class, "inJustDecodeBounds", "Z"); gOptions_sampleSizeFieldID = getFieldIDCheck(env, gOptions_class, "inSampleSize", "I"); gOptions_configFieldID = getFieldIDCheck(env, gOptions_class, "inPreferredConfig", gOptions_justBoundsFieldID = getFieldIDCheck(env, options_class, "inJustDecodeBounds", "Z"); gOptions_sampleSizeFieldID = getFieldIDCheck(env, options_class, "inSampleSize", "I"); gOptions_configFieldID = getFieldIDCheck(env, options_class, "inPreferredConfig", "Landroid/graphics/Bitmap$Config;"); gOptions_mutableFieldID = getFieldIDCheck(env, gOptions_class, "inMutable", "Z"); gOptions_ditherFieldID = getFieldIDCheck(env, gOptions_class, "inDither", "Z"); gOptions_purgeableFieldID = getFieldIDCheck(env, gOptions_class, "inPurgeable", "Z"); gOptions_shareableFieldID = getFieldIDCheck(env, gOptions_class, "inInputShareable", "Z"); gOptions_preferQualityOverSpeedFieldID = getFieldIDCheck(env, gOptions_class, gOptions_mutableFieldID = getFieldIDCheck(env, options_class, "inMutable", "Z"); gOptions_ditherFieldID = getFieldIDCheck(env, options_class, "inDither", "Z"); gOptions_purgeableFieldID = getFieldIDCheck(env, options_class, "inPurgeable", "Z"); gOptions_shareableFieldID = getFieldIDCheck(env, options_class, "inInputShareable", "Z"); gOptions_preferQualityOverSpeedFieldID = getFieldIDCheck(env, options_class, "inPreferQualityOverSpeed", "Z"); gOptions_widthFieldID = getFieldIDCheck(env, gOptions_class, "outWidth", "I"); gOptions_heightFieldID = getFieldIDCheck(env, gOptions_class, "outHeight", "I"); gOptions_mimeFieldID = getFieldIDCheck(env, gOptions_class, "outMimeType", "Ljava/lang/String;"); gOptions_mCancelID = getFieldIDCheck(env, gOptions_class, "mCancel", "Z"); gOptions_widthFieldID = getFieldIDCheck(env, options_class, "outWidth", "I"); gOptions_heightFieldID = getFieldIDCheck(env, options_class, "outHeight", "I"); gOptions_mimeFieldID = getFieldIDCheck(env, options_class, "outMimeType", "Ljava/lang/String;"); gOptions_mCancelID = getFieldIDCheck(env, options_class, "mCancel", "Z"); gBitmap_class = make_globalref(env, "android/graphics/Bitmap"); gBitmap_nativeBitmapFieldID = getFieldIDCheck(env, gBitmap_class, "mNativeBitmap", "I"); gFileDescriptor_class = make_globalref(env, "java/io/FileDescriptor"); gFileDescriptor_descriptor = getFieldIDCheck(env, gFileDescriptor_class, "descriptor", "I"); jclass bitmap_class = env->FindClass("android/graphics/Bitmap"); SkASSERT(bitmap_class); gBitmap_nativeBitmapFieldID = getFieldIDCheck(env, bitmap_class, "mNativeBitmap", "I"); int ret = AndroidRuntime::registerNativeMethods(env, "android/graphics/BitmapFactory$Options", Loading @@ -554,6 +537,6 @@ int register_android_graphics_BitmapFactory(JNIEnv* env) { if (ret) { return ret; } return android::AndroidRuntime::registerNativeMethods(env, kClassPathName, return android::AndroidRuntime::registerNativeMethods(env, "android/graphics/BitmapFactory", gMethods, SK_ARRAY_COUNT(gMethods)); }
core/jni/android/graphics/BitmapRegionDecoder.cpp +2 −22 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include "SkBitmapRegionDecoder.h" #include "CreateJavaOutputStreamAdaptor.h" #include "Utils.h" #include "JNIHelp.h" #include <android_runtime/AndroidRuntime.h> #include "android_util_Binder.h" Loading @@ -39,9 +40,6 @@ #include <utils/Asset.h> #include <sys/stat.h> static jclass gFileDescriptor_class; static jfieldID gFileDescriptor_descriptor; #if 0 #define TRACE_BITMAP(code) code #else Loading Loading @@ -111,8 +109,7 @@ static jobject nativeNewInstanceFromFileDescriptor(JNIEnv* env, jobject clazz, jobject fileDescriptor, jboolean isShareable) { NPE_CHECK_RETURN_ZERO(env, fileDescriptor); jint descriptor = env->GetIntField(fileDescriptor, gFileDescriptor_descriptor); jint descriptor = jniGetFDFromFileDescriptor(env, fileDescriptor); SkStream *stream = NULL; struct stat fdStat; int newFD; Loading Loading @@ -300,25 +297,8 @@ 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)); }
core/jni/android_backup_BackupDataInput.cpp +2 −15 Original line number Diff line number Diff line Loading @@ -25,9 +25,6 @@ namespace android { // java.io.FileDescriptor static jfieldID s_descriptorField = 0; // android.app.backup.BackupDataInput$EntityHeader static jfieldID s_keyField = 0; static jfieldID s_dataSizeField = 0; Loading @@ -35,9 +32,7 @@ static jfieldID s_dataSizeField = 0; static int ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor) { int err; int fd = env->GetIntField(fileDescriptor, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); if (fd == -1) { return NULL; } Loading Loading @@ -140,15 +135,7 @@ int register_android_backup_BackupDataInput(JNIEnv* env) { //LOGD("register_android_backup_BackupDataInput"); jclass clazz; clazz = env->FindClass("java/io/FileDescriptor"); LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); LOG_FATAL_IF(s_descriptorField == NULL, "Unable to find descriptor field in java.io.FileDescriptor"); clazz = env->FindClass("android/app/backup/BackupDataInput$EntityHeader"); jclass clazz = env->FindClass("android/app/backup/BackupDataInput$EntityHeader"); LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupDataInput.EntityHeader"); s_keyField = env->GetFieldID(clazz, "key", "Ljava/lang/String;"); LOG_FATAL_IF(s_keyField == NULL, Loading
core/jni/android_backup_BackupDataOutput.cpp +1 −14 Original line number Diff line number Diff line Loading @@ -25,14 +25,10 @@ namespace android { static jfieldID s_descriptorField = 0; static int ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor) { int err; int fd = env->GetIntField(fileDescriptor, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); if (fd == -1) { return NULL; } Loading Loading @@ -112,15 +108,6 @@ static const JNINativeMethod g_methods[] = { int register_android_backup_BackupDataOutput(JNIEnv* env) { //LOGD("register_android_backup_BackupDataOutput"); jclass clazz; clazz = env->FindClass("java/io/FileDescriptor"); LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); LOG_FATAL_IF(s_descriptorField == NULL, "Unable to find descriptor field in java.io.FileDescriptor"); return AndroidRuntime::registerNativeMethods(env, "android/app/backup/BackupDataOutput", g_methods, NELEM(g_methods)); } Loading
core/jni/android_backup_BackupHelperDispatcher.cpp +7 −22 Original line number Diff line number Diff line Loading @@ -37,8 +37,6 @@ struct chunk_header_v1 { int nameLength; // not including the NULL terminator, which is not written to the file }; // java.io.FileDescriptor static jfieldID s_descriptorField = 0; static jfieldID s_chunkSizeField = 0; static jfieldID s_keyPrefixField = 0; Loading @@ -46,12 +44,11 @@ static int readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj) { chunk_header_v1 flattenedHeader; int fd; ssize_t amt; String8 keyPrefix; char* buf; fd = env->GetIntField(fdObj, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fdObj); amt = read(fd, &flattenedHeader.headerSize, sizeof(flattenedHeader.headerSize)); if (amt != sizeof(flattenedHeader.headerSize)) { Loading Loading @@ -128,9 +125,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj) static int skipChunk_native(JNIEnv* env, jobject clazz, jobject fdObj, jint bytesToSkip) { int fd; fd = env->GetIntField(fdObj, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fdObj); lseek(fd, bytesToSkip, SEEK_CUR); Loading @@ -152,9 +147,8 @@ allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdO int nameLength; int namePadding; int headerSize; int fd; fd = env->GetIntField(fdObj, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fdObj); nameObj = (jstring)env->GetObjectField(headerObj, s_keyPrefixField); Loading @@ -175,13 +169,12 @@ writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj, { int err; chunk_header_v1 header; int fd; int namePadding; int prevPos; jstring nameObj; const char* buf; fd = env->GetIntField(fdObj, s_descriptorField); int fd = jniGetFDFromFileDescriptor(env, fdObj); prevPos = lseek(fd, 0, SEEK_CUR); nameObj = (jstring)env->GetObjectField(headerObj, s_keyPrefixField); Loading Loading @@ -234,15 +227,7 @@ static const JNINativeMethod g_methods[] = { int register_android_backup_BackupHelperDispatcher(JNIEnv* env) { jclass clazz; clazz = env->FindClass("java/io/FileDescriptor"); LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); LOG_FATAL_IF(s_descriptorField == NULL, "Unable to find descriptor field in java.io.FileDescriptor"); clazz = env->FindClass("android/app/backup/BackupHelperDispatcher$Header"); jclass clazz = env->FindClass("android/app/backup/BackupHelperDispatcher$Header"); LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupHelperDispatcher.Header"); s_chunkSizeField = env->GetFieldID(clazz, "chunkSize", "I"); Loading