diff options
| author | Mai M <mathew1800@gmail.com> | 2021-05-20 11:16:08 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-20 11:16:08 -0400 |
| commit | 1d175e7e137bca2bd284c42bd4269ed1e823ef6d (patch) | |
| tree | 0f6a9e491b4ccc4eb1ae445c4b345311c2f6057f /Source/Android/app/src/main/java | |
| parent | 9312e45cbe575e41e81f6baff1ff7053b2cccd7c (diff) | |
| parent | 69626f17264dffe7ba9a78c33ba8b6c2355a5840 (diff) | |
Merge pull request #9728 from JosJuice/android-get-shader-list
Android: Use JNI for getting post-processsing shaders
Diffstat (limited to 'Source/Android/app/src/main/java')
4 files changed, 26 insertions, 84 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/PostProcessing.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/PostProcessing.java new file mode 100644 index 0000000000..4d7ccd5032 --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/PostProcessing.java @@ -0,0 +1,15 @@ +package org.dolphinemu.dolphinemu.features.settings.model; + +import androidx.annotation.NonNull; + +public class PostProcessing +{ + @NonNull + public static native String[] getShaderList(); + + @NonNull + public static native String[] getAnaglyphShaderList(); + + @NonNull + public static native String[] getPassiveShaderList(); +} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java index f23e0cf374..75c0faaa09 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java @@ -17,6 +17,7 @@ import org.dolphinemu.dolphinemu.features.settings.model.IntSetting; import org.dolphinemu.dolphinemu.features.settings.model.LegacyBooleanSetting; import org.dolphinemu.dolphinemu.features.settings.model.LegacyIntSetting; import org.dolphinemu.dolphinemu.features.settings.model.LegacyStringSetting; +import org.dolphinemu.dolphinemu.features.settings.model.PostProcessing; import org.dolphinemu.dolphinemu.features.settings.model.Settings; import org.dolphinemu.dolphinemu.features.settings.model.StringSetting; import org.dolphinemu.dolphinemu.features.settings.model.WiimoteProfileStringSetting; @@ -622,11 +623,17 @@ public final class SettingsFragmentPresenter int stereoModeValue = IntSetting.GFX_STEREO_MODE.getInt(mSettings); final int anaglyphMode = 3; - String subDir = stereoModeValue == anaglyphMode ? "Anaglyph" : null; - String[] shaderListEntries = getShaderList(subDir); - String[] shaderListValues = new String[shaderListEntries.length]; - System.arraycopy(shaderListEntries, 0, shaderListValues, 0, shaderListEntries.length); + String[] shaderList = stereoModeValue == anaglyphMode ? + PostProcessing.getAnaglyphShaderList() : PostProcessing.getShaderList(); + + String[] shaderListEntries = new String[shaderList.length + 1]; + shaderListEntries[0] = mContext.getString(R.string.off); + System.arraycopy(shaderList, 0, shaderListEntries, 1, shaderList.length); + + String[] shaderListValues = new String[shaderList.length + 1]; shaderListValues[0] = ""; + System.arraycopy(shaderList, 0, shaderListValues, 1, shaderList.length); + sl.add(new StringSingleChoiceSetting(mContext, StringSetting.GFX_ENHANCE_POST_SHADER, R.string.post_processing_shader, 0, shaderListEntries, shaderListValues)); @@ -664,46 +671,6 @@ public final class SettingsFragmentPresenter } } - private String[] getShaderList(String subDir) - { - try - { - String shadersPath = - DirectoryInitialization.getDolphinInternalDirectory() + "/Shaders"; - if (!TextUtils.isEmpty(subDir)) - { - shadersPath += "/" + subDir; - } - - File file = new File(shadersPath); - File[] shaderFiles = file.listFiles(); - if (shaderFiles != null) - { - String[] result = new String[shaderFiles.length + 1]; - result[0] = mView.getActivity().getString(R.string.off); - for (int i = 0; i < shaderFiles.length; i++) - { - String name = shaderFiles[i].getName(); - int extensionIndex = name.indexOf(".glsl"); - if (extensionIndex > 0) - { - name = name.substring(0, extensionIndex); - } - result[i + 1] = name; - } - - return result; - } - } - catch (Exception ex) - { - Log.debug("[Settings] Unable to find shader files"); - // return empty list - } - - return new String[]{}; - } - private void addHackSettings(ArrayList<SettingsItem> sl) { sl.add(new HeaderSetting(mContext, R.string.embedded_frame_buffer, 0)); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java index 82ea3a84f1..4ed3f1363e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java @@ -234,18 +234,6 @@ public final class SettingsFile readFile(getCustomGameSettingsFile(gameId), ini, view); } - public static void readGenericGameSettings(final String gameId, IniFile ini, - SettingsActivityView view) - { - readFile(getGenericGameSettingsFile(gameId), ini, view); - } - - public static void readGenericGameSettingsForAllRegions(final String gameId, - IniFile ini, SettingsActivityView view) - { - readFile(getGenericGameSettingsForAllRegions(gameId), ini, view); - } - /** * Saves a given .ini file on disk. * If unsuccessful, outputs an error telling why it failed. @@ -296,22 +284,6 @@ public final class SettingsFile DirectoryInitialization.getUserDirectory() + "/Config/" + fileName + ".ini"); } - private static File getGenericGameSettingsForAllRegions(String gameId) - { - // Use the first 3 chars from the gameId to load the generic game settings for all regions - gameId = gameId.substring(0, 3); - return new File( - DirectoryInitialization.getDolphinInternalDirectory() + "/GameSettings/" + - gameId + ".ini"); - } - - private static File getGenericGameSettingsFile(String gameId) - { - return new File( - DirectoryInitialization.getDolphinInternalDirectory() + "/GameSettings/" + - gameId + ".ini"); - } - public static File getCustomGameSettingsFile(String gameId) { return new File( 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 7af6350d64..9bb68e8b13 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 @@ -42,7 +42,6 @@ public final class DirectoryInitialization DirectoryInitializationState.NOT_YET_INITIALIZED; private static volatile boolean areDirectoriesAvailable = false; private static String userPath; - private static String internalPath; private static AtomicBoolean isDolphinDirectoryInitializationRunning = new AtomicBoolean(false); public enum DirectoryInitializationState @@ -128,7 +127,6 @@ public final class DirectoryInitialization private static void initializeInternalStorage(Context context) { File sysDirectory = new File(context.getFilesDir(), "Sys"); - internalPath = sysDirectory.getAbsolutePath(); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); String revision = NativeLibrary.GetGitRevision(); @@ -241,16 +239,6 @@ public final class DirectoryInitialization return userPath; } - public static String getDolphinInternalDirectory() - { - if (!areDirectoriesAvailable) - { - throw new IllegalStateException( - "DirectoryInitialization must run before accessing the internal directory!"); - } - return internalPath; - } - private static void sendBroadcastState(DirectoryInitializationState state, Context context) { Intent localIntent = |
