Use getCacheDir if getExternalCacheDir returns null.

This commit is contained in:
Marcel Alexandru Nitan 2023-06-13 18:44:27 +00:00
parent 4e4705e983
commit cff7a4bfd2
3 changed files with 15 additions and 2 deletions

View File

@ -297,6 +297,8 @@ public final class NativeLibrary
public static native void SetCacheDirectory(String directory);
public static native String GetCacheDirectory();
public static native int DefaultCPUCore();
public static native String GetDefaultGraphicsBackendName();

View File

@ -122,7 +122,12 @@ public final class DirectoryInitialization
File cacheDir = context.getExternalCacheDir();
if (cacheDir == null)
return false;
{
// In some custom ROMs getExternalCacheDir might return null for some reasons. If that is the case, fallback to getCacheDir which seems to work just fine.
cacheDir = context.getCacheDir();
if (cacheDir == null)
return false;
}
Log.debug("[DirectoryInitialization] Cache Dir: " + cacheDir.getPath());
NativeLibrary.SetCacheDirectory(cacheDir.getPath());
@ -236,7 +241,7 @@ public final class DirectoryInitialization
public static File getGameListCache(Context context)
{
return new File(context.getExternalCacheDir(), "gamelist.cache");
return new File(NativeLibrary.GetCacheDirectory(), "gamelist.cache");
}
private static boolean copyAsset(String asset, File output, Context context)

View File

@ -400,6 +400,12 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetCacheDire
File::SetUserPath(D_CACHE_IDX, GetJString(env, jDirectory));
}
JNIEXPORT jstring JNICALL
Java_org_dolphinemu_dolphinemu_NativeLibrary_GetCacheDirectory(JNIEnv* env, jclass)
{
return ToJString(env, File::GetUserPath(D_CACHE_IDX));
}
JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_DefaultCPUCore(JNIEnv*, jclass)
{
return static_cast<jint>(PowerPC::DefaultCPUCore());