Skip to content

Commit

Permalink
Move registration of AssetManager.mObject to zygote.
Browse files Browse the repository at this point in the history
bug: 73865351
Test: m

Change-Id: I9d0f0c8ae016b8823246e25bfdbff0d4fd8eaae1
  • Loading branch information
Nicolas Geoffray committed May 10, 2018
1 parent 618418a commit a55a59a
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 25 deletions.
5 changes: 2 additions & 3 deletions core/jni/android_util_AssetManager.cpp
Expand Up @@ -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;
Expand Down
5 changes: 5 additions & 0 deletions core/jni/include/android_runtime/android_util_AssetManager.h
Expand Up @@ -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

Expand Down
22 changes: 0 additions & 22 deletions native/android/asset_manager.cpp
Expand Up @@ -55,33 +55,11 @@ 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);
}

Expand Down

0 comments on commit a55a59a

Please sign in to comment.