Merge "Move registration of AssetManager.mObject to zygote." into pi-dev

am: 85ec63532f

Change-Id: I5f8035cb13d51a038b81ddc779e2881f683eb200
This commit is contained in:
Nicolas Geoffray 2018-05-11 03:29:21 -07:00 committed by android-build-merger
commit 5652b43cca
3 changed files with 7 additions and 25 deletions

View File

@ -75,9 +75,8 @@ static struct assetfiledescriptor_offsets_t {
jfieldID mLength; jfieldID mLength;
} gAssetFileDescriptorOffsets; } gAssetFileDescriptorOffsets;
static struct assetmanager_offsets_t { // This is also used by asset_manager.cpp.
jfieldID mObject; assetmanager_offsets_t gAssetManagerOffsets;
} gAssetManagerOffsets;
static struct { static struct {
jfieldID native_ptr; jfieldID native_ptr;

View File

@ -27,6 +27,11 @@ namespace android {
extern AAssetManager* NdkAssetManagerForJavaObject(JNIEnv* env, jobject jassetmanager); extern AAssetManager* NdkAssetManagerForJavaObject(JNIEnv* env, jobject jassetmanager);
extern Guarded<AssetManager2>* AssetManagerForJavaObject(JNIEnv* env, jobject jassetmanager); extern Guarded<AssetManager2>* AssetManagerForJavaObject(JNIEnv* env, jobject jassetmanager);
extern Guarded<AssetManager2>* AssetManagerForNdkAssetManager(AAssetManager* assetmanager); extern Guarded<AssetManager2>* AssetManagerForNdkAssetManager(AAssetManager* assetmanager);
struct assetmanager_offsets_t
{
jfieldID mObject;
};
extern assetmanager_offsets_t gAssetManagerOffsets;
} // namespace android } // namespace android

View File

@ -55,33 +55,11 @@ struct AAsset {
// -------------------- Public native C API -------------------- // -------------------- 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 * Asset Manager functionality
*/ */
AAssetManager* AAssetManager_fromJava(JNIEnv* env, jobject assetManager) 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); return (AAssetManager*) env->GetLongField(assetManager, gAssetManagerOffsets.mObject);
} }