summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2021-12-30 18:37:17 +0100
committerJosJuice <josjuice@gmail.com>2023-03-03 22:28:24 +0100
commit93657cce5433552dbd0d836bac34e65143384a2c (patch)
tree2ed1c9ce5cd60cb138d45e1f77b733a6a9ad3f50 /Source/Android/app/src/main/java
parent9a8a3955605c8e1b33b358f258046bc549e88d1f (diff)
Android: Stop extracting pre-defined controller INIs
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java70
1 files changed, 10 insertions, 60 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
index b1584df1be..c4bfdbd7bf 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
@@ -31,13 +31,16 @@ import java.io.InputStream;
import java.io.OutputStream;
/**
- * A service that spawns its own thread in order to copy several binary and shader files
- * from the Dolphin APK to the external file system.
+ * A class that spawns its own thread in order perform initialization.
+ *
+ * The initialization steps include:
+ * - Extracting the Sys directory from the APK so it can be accessed using regular file APIs
+ * - Letting the native code know where on external storage it should place the User directory
+ * - Running the native code's init steps (which include things like populating the User directory)
*/
public final class DirectoryInitialization
{
public static final String EXTRA_STATE = "directoryState";
- private static final int WiimoteNewVersion = 5; // Last changed in PR 8907
private static final MutableLiveData<DirectoryInitializationState> directoryState =
new MutableLiveData<>(DirectoryInitializationState.NOT_YET_INITIALIZED);
private static volatile boolean areDirectoriesAvailable = false;
@@ -73,8 +76,7 @@ public final class DirectoryInitialization
System.exit(1);
}
- initializeInternalStorage(context);
- boolean wiimoteIniWritten = initializeExternalStorage(context);
+ extractSysDirectory(context);
NativeLibrary.Initialize();
NativeLibrary.ReportStartToAnalytics();
@@ -82,7 +84,8 @@ public final class DirectoryInitialization
checkThemeSettings(context);
- if (wiimoteIniWritten)
+ // TODO: Does doing this still make sense?
+ if (false)
{
// This has to be done after calling NativeLibrary.Initialize(),
// as it relies on the config system
@@ -131,7 +134,7 @@ public final class DirectoryInitialization
return true;
}
- private static void initializeInternalStorage(Context context)
+ private static void extractSysDirectory(Context context)
{
File sysDirectory = new File(context.getFilesDir(), "Sys");
@@ -153,45 +156,6 @@ public final class DirectoryInitialization
SetSysDirectory(sysDirectory.getPath());
}
- // Returns whether the WiimoteNew.ini file was written to
- private static boolean initializeExternalStorage(Context context)
- {
- // Create User directory structure and copy some NAND files from the extracted Sys directory.
- CreateUserDirectories();
-
- // GCPadNew.ini and WiimoteNew.ini must contain specific values in order for controller
- // input to work as intended (they aren't user configurable), so we overwrite them just
- // in case the user has tried to modify them manually.
- //
- // ...Except WiimoteNew.ini contains the user configurable settings for Wii Remote
- // extensions in addition to all of its lines that aren't user configurable, so since we
- // don't want to lose the selected extensions, we don't overwrite that file if it exists.
- //
- // TODO: Redo the Android controller system so that we don't have to extract these INIs.
- String configDirectory = NativeLibrary.GetUserDirectory() + File.separator + "Config";
- String profileDirectory =
- NativeLibrary.GetUserDirectory() + File.separator + "Config/Profiles/Wiimote/";
- createWiimoteProfileDirectory(profileDirectory);
-
- copyAsset("GCPadNew.ini", new File(configDirectory, "GCPadNew.ini"), true, context);
-
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- boolean overwriteWiimoteIni = prefs.getInt("WiimoteNewVersion", 0) != WiimoteNewVersion;
- boolean wiimoteIniWritten = copyAsset("WiimoteNew.ini",
- new File(configDirectory, "WiimoteNew.ini"), overwriteWiimoteIni, context);
- if (overwriteWiimoteIni)
- {
- SharedPreferences.Editor sPrefsEditor = prefs.edit();
- sPrefsEditor.putInt("WiimoteNewVersion", WiimoteNewVersion);
- sPrefsEditor.apply();
- }
-
- copyAsset("WiimoteProfile.ini", new File(profileDirectory, "WiimoteProfile.ini"), true,
- context);
-
- return wiimoteIniWritten;
- }
-
private static void deleteDirectoryRecursively(@NonNull final File file)
{
if (file.isDirectory())
@@ -322,18 +286,6 @@ public final class DirectoryInitialization
}
}
- private static void createWiimoteProfileDirectory(String directory)
- {
- File wiiPath = new File(directory);
- if (!wiiPath.isDirectory())
- {
- if (!wiiPath.mkdirs())
- {
- Log.error("[DirectoryInitialization] Failed to create folder " + wiiPath.getAbsolutePath());
- }
- }
- }
-
public static boolean preferOldFolderPicker(Context context)
{
// As of January 2021, ACTION_OPEN_DOCUMENT_TREE seems to be broken on the Nvidia Shield TV
@@ -433,7 +385,5 @@ public final class DirectoryInitialization
}
}
- private static native void CreateUserDirectories();
-
private static native void SetSysDirectory(String path);
}