summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nicolas Geoffray <ngeoffray@google.com> 2018-05-11 10:13:42 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-05-11 10:13:42 +0000
commit85ec63532fa87f4b5805a65a2e6f2807fa00e51a (patch)
tree93559b8dd8ea895d406ca0711c3aa42129a96f01
parent34a06b86bd6d35133e0a3cd1f44ce8cde709c70e (diff)
parenta55a59a4f5102c54a08aae0e2e3d38a5095666e1 (diff)
Merge "Move registration of AssetManager.mObject to zygote." into pi-dev
-rw-r--r--core/jni/android_util_AssetManager.cpp5
-rw-r--r--core/jni/include/android_runtime/android_util_AssetManager.h5
-rw-r--r--native/android/asset_manager.cpp22
3 files changed, 7 insertions, 25 deletions
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
index 7fa224757fd2..fa9f44557d3f 100644
--- a/core/jni/android_util_AssetManager.cpp
+++ b/core/jni/android_util_AssetManager.cpp
@@ -75,9 +75,8 @@ static struct assetfiledescriptor_offsets_t {
jfieldID mLength;
} gAssetFileDescriptorOffsets;
-static struct assetmanager_offsets_t {
- jfieldID mObject;
-} gAssetManagerOffsets;
+// This is also used by asset_manager.cpp.
+assetmanager_offsets_t gAssetManagerOffsets;
static struct {
jfieldID native_ptr;
diff --git a/core/jni/include/android_runtime/android_util_AssetManager.h b/core/jni/include/android_runtime/android_util_AssetManager.h
index 2c1e3579eb92..ac734a908bed 100644
--- a/core/jni/include/android_runtime/android_util_AssetManager.h
+++ b/core/jni/include/android_runtime/android_util_AssetManager.h
@@ -27,6 +27,11 @@ namespace android {
extern AAssetManager* NdkAssetManagerForJavaObject(JNIEnv* env, jobject jassetmanager);
extern Guarded<AssetManager2>* AssetManagerForJavaObject(JNIEnv* env, jobject jassetmanager);
extern Guarded<AssetManager2>* AssetManagerForNdkAssetManager(AAssetManager* assetmanager);
+struct assetmanager_offsets_t
+{
+ jfieldID mObject;
+};
+extern assetmanager_offsets_t gAssetManagerOffsets;
} // namespace android
diff --git a/native/android/asset_manager.cpp b/native/android/asset_manager.cpp
index e70d5ea0d566..69cf80477dde 100644
--- a/native/android/asset_manager.cpp
+++ b/native/android/asset_manager.cpp
@@ -56,32 +56,10 @@ struct AAsset {
// -------------------- Public native C API --------------------
/**
- * Supporting information
- */
-
-static struct assetmanager_offsets_t
-{
- jfieldID mObject;
-} gAssetManagerOffsets;
-
-static volatile bool gJNIConfigured = false;
-static Mutex gMutex;
-
-/**
* Asset Manager functionality
*/
AAssetManager* AAssetManager_fromJava(JNIEnv* env, jobject assetManager)
{
- {
- Mutex::Autolock _l(gMutex);
-
- if (gJNIConfigured == false) {
- jclass amClass = env->FindClass("android/content/res/AssetManager");
- gAssetManagerOffsets.mObject = env->GetFieldID(amClass, "mObject", "J");
- gJNIConfigured = true;
- }
- }
-
return (AAssetManager*) env->GetLongField(assetManager, gAssetManagerOffsets.mObject);
}