Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14e0a1e8 authored by Tim Zhang's avatar Tim Zhang Committed by John Reck
Browse files

Remove FastJNI optimization on AssetManager to avoid dead lock.

I found there was a dead lock among main, android.display and GC threads
when running monkey test.
 - Main thread got a mutex and was suspended by GC thread.
 - Android.display thread waited for mutex held by main thread.
 - GC thread waited for suspention of android.display thread.

This will lead to ANR or screen freeze.

Merged-In: I13cf1eca3cb3b7c01aa754874f2b48aab0b472e8
Change-Id: I13cf1eca3cb3b7c01aa754874f2b48aab0b472e8
parent 3e640036
Loading
Loading
Loading
Loading
+22 −22
Original line number Original line Diff line number Diff line
@@ -2161,9 +2161,9 @@ static const JNINativeMethod gAssetManagerMethods[] = {
        (void*) android_content_AssetManager_readAsset },
        (void*) android_content_AssetManager_readAsset },
    { "seekAsset",      "(JJI)J",
    { "seekAsset",      "(JJI)J",
        (void*) android_content_AssetManager_seekAsset },
        (void*) android_content_AssetManager_seekAsset },
    { "getAssetLength", "!(J)J",
    { "getAssetLength", "(J)J",
        (void*) android_content_AssetManager_getAssetLength },
        (void*) android_content_AssetManager_getAssetLength },
    { "getAssetRemainingLength", "!(J)J",
    { "getAssetRemainingLength", "(J)J",
        (void*) android_content_AssetManager_getAssetRemainingLength },
        (void*) android_content_AssetManager_getAssetRemainingLength },
    { "addAssetPathNative", "(Ljava/lang/String;Z)I",
    { "addAssetPathNative", "(Ljava/lang/String;Z)I",
        (void*) android_content_AssetManager_addAssetPath },
        (void*) android_content_AssetManager_addAssetPath },
@@ -2179,25 +2179,25 @@ static const JNINativeMethod gAssetManagerMethods[] = {
        (void*) android_content_AssetManager_getNonSystemLocales },
        (void*) android_content_AssetManager_getNonSystemLocales },
    { "getSizeConfigurations", "()[Landroid/content/res/Configuration;",
    { "getSizeConfigurations", "()[Landroid/content/res/Configuration;",
        (void*) android_content_AssetManager_getSizeConfigurations },
        (void*) android_content_AssetManager_getSizeConfigurations },
    { "setConfiguration", "!(IILjava/lang/String;IIIIIIIIIIIIII)V",
    { "setConfiguration", "(IILjava/lang/String;IIIIIIIIIIIIII)V",
        (void*) android_content_AssetManager_setConfiguration },
        (void*) android_content_AssetManager_setConfiguration },
    { "getResourceIdentifier","!(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I",
    { "getResourceIdentifier","(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I",
        (void*) android_content_AssetManager_getResourceIdentifier },
        (void*) android_content_AssetManager_getResourceIdentifier },
    { "getResourceName","!(I)Ljava/lang/String;",
    { "getResourceName","(I)Ljava/lang/String;",
        (void*) android_content_AssetManager_getResourceName },
        (void*) android_content_AssetManager_getResourceName },
    { "getResourcePackageName","!(I)Ljava/lang/String;",
    { "getResourcePackageName","(I)Ljava/lang/String;",
        (void*) android_content_AssetManager_getResourcePackageName },
        (void*) android_content_AssetManager_getResourcePackageName },
    { "getResourceTypeName","!(I)Ljava/lang/String;",
    { "getResourceTypeName","(I)Ljava/lang/String;",
        (void*) android_content_AssetManager_getResourceTypeName },
        (void*) android_content_AssetManager_getResourceTypeName },
    { "getResourceEntryName","!(I)Ljava/lang/String;",
    { "getResourceEntryName","(I)Ljava/lang/String;",
        (void*) android_content_AssetManager_getResourceEntryName },
        (void*) android_content_AssetManager_getResourceEntryName },
    { "loadResourceValue","!(ISLandroid/util/TypedValue;Z)I",
    { "loadResourceValue","(ISLandroid/util/TypedValue;Z)I",
        (void*) android_content_AssetManager_loadResourceValue },
        (void*) android_content_AssetManager_loadResourceValue },
    { "loadResourceBagValue","!(IILandroid/util/TypedValue;Z)I",
    { "loadResourceBagValue","(IILandroid/util/TypedValue;Z)I",
        (void*) android_content_AssetManager_loadResourceBagValue },
        (void*) android_content_AssetManager_loadResourceBagValue },
    { "getStringBlockCount","!()I",
    { "getStringBlockCount","()I",
        (void*) android_content_AssetManager_getStringBlockCount },
        (void*) android_content_AssetManager_getStringBlockCount },
    { "getNativeStringBlock","!(I)J",
    { "getNativeStringBlock","(I)J",
        (void*) android_content_AssetManager_getNativeStringBlock },
        (void*) android_content_AssetManager_getNativeStringBlock },
    { "getCookieName","(I)Ljava/lang/String;",
    { "getCookieName","(I)Ljava/lang/String;",
        (void*) android_content_AssetManager_getCookieName },
        (void*) android_content_AssetManager_getCookieName },
@@ -2215,21 +2215,21 @@ static const JNINativeMethod gAssetManagerMethods[] = {
        (void*) android_content_AssetManager_copyTheme },
        (void*) android_content_AssetManager_copyTheme },
    { "clearTheme", "(J)V",
    { "clearTheme", "(J)V",
        (void*) android_content_AssetManager_clearTheme },
        (void*) android_content_AssetManager_clearTheme },
    { "loadThemeAttributeValue", "!(JILandroid/util/TypedValue;Z)I",
    { "loadThemeAttributeValue", "(JILandroid/util/TypedValue;Z)I",
        (void*) android_content_AssetManager_loadThemeAttributeValue },
        (void*) android_content_AssetManager_loadThemeAttributeValue },
    { "getThemeChangingConfigurations", "!(J)I",
    { "getThemeChangingConfigurations", "(J)I",
        (void*) android_content_AssetManager_getThemeChangingConfigurations },
        (void*) android_content_AssetManager_getThemeChangingConfigurations },
    { "dumpTheme", "(JILjava/lang/String;Ljava/lang/String;)V",
    { "dumpTheme", "(JILjava/lang/String;Ljava/lang/String;)V",
        (void*) android_content_AssetManager_dumpTheme },
        (void*) android_content_AssetManager_dumpTheme },
    { "applyStyle","!(JIIJ[I[I[I)Z",
    { "applyStyle","(JIIJ[I[I[I)Z",
        (void*) android_content_AssetManager_applyStyle },
        (void*) android_content_AssetManager_applyStyle },
    { "resolveAttrs","!(JII[I[I[I[I)Z",
    { "resolveAttrs","(JII[I[I[I[I)Z",
        (void*) android_content_AssetManager_resolveAttrs },
        (void*) android_content_AssetManager_resolveAttrs },
    { "retrieveAttributes","!(J[I[I[I)Z",
    { "retrieveAttributes","(J[I[I[I)Z",
        (void*) android_content_AssetManager_retrieveAttributes },
        (void*) android_content_AssetManager_retrieveAttributes },
    { "getArraySize","!(I)I",
    { "getArraySize","(I)I",
        (void*) android_content_AssetManager_getArraySize },
        (void*) android_content_AssetManager_getArraySize },
    { "retrieveArray","!(I[I)I",
    { "retrieveArray","(I[I)I",
        (void*) android_content_AssetManager_retrieveArray },
        (void*) android_content_AssetManager_retrieveArray },


    // XML files.
    // XML files.
@@ -2239,11 +2239,11 @@ static const JNINativeMethod gAssetManagerMethods[] = {
    // Arrays.
    // Arrays.
    { "getArrayStringResource","(I)[Ljava/lang/String;",
    { "getArrayStringResource","(I)[Ljava/lang/String;",
        (void*) android_content_AssetManager_getArrayStringResource },
        (void*) android_content_AssetManager_getArrayStringResource },
    { "getArrayStringInfo","!(I)[I",
    { "getArrayStringInfo","(I)[I",
        (void*) android_content_AssetManager_getArrayStringInfo },
        (void*) android_content_AssetManager_getArrayStringInfo },
    { "getArrayIntResource","!(I)[I",
    { "getArrayIntResource","(I)[I",
        (void*) android_content_AssetManager_getArrayIntResource },
        (void*) android_content_AssetManager_getArrayIntResource },
    { "getStyleAttributes","!(I)[I",
    { "getStyleAttributes","(I)[I",
        (void*) android_content_AssetManager_getStyleAttributes },
        (void*) android_content_AssetManager_getStyleAttributes },


    // Bookkeeping.
    // Bookkeeping.