summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2020-07-22 16:28:08 +0200
committerJosJuice <josjuice@gmail.com>2020-09-15 19:10:56 +0200
commite24d50e881128f944fa76f15c7d3fd6f6c43e0d5 (patch)
tree5dbfebc3da673632d3f59e123e414fe314cd9031 /Source/Android/app/src/main/java/org
parenta538301891312b756828e220e735110d9484a411 (diff)
Android: Hook up game settings to the new config system
Diffstat (limited to 'Source/Android/app/src/main/java/org')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java7
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java7
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java24
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AdHocBooleanSetting.java37
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java12
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/FloatSetting.java13
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java13
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/NativeConfig.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java36
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java12
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java27
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java16
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFileCache.java9
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java22
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java6
17 files changed, 157 insertions, 96 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
index dd66031531..145bf36119 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
@@ -364,6 +364,13 @@ public final class EmulationActivity extends AppCompatActivity
}
@Override
+ protected void onDestroy()
+ {
+ super.onDestroy();
+ mSettings.close();
+ }
+
+ @Override
public void onBackPressed()
{
if (!closeSubmenu())
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
index 9fa73b3da1..ff2db6b6a5 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
@@ -156,11 +156,12 @@ public final class GameAdapter extends RecyclerView.Adapter<GameViewHolder> impl
return true;
}
- GamePropertiesDialog fragment =
- GamePropertiesDialog
- .newInstance(holder.gameFile.getPath(), gameId, holder.gameFile.getPlatform());
+ GamePropertiesDialog fragment = GamePropertiesDialog.newInstance(holder.gameFile.getPath(),
+ gameId, holder.gameFile.getRevision(), holder.gameFile.getPlatform());
+
((FragmentActivity) view.getContext()).getSupportFragmentManager().beginTransaction()
.add(fragment, GamePropertiesDialog.TAG).commit();
+
return true;
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
index 44a57337e3..6790f331b2 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
@@ -100,9 +100,9 @@ public final class GameRowPresenter extends Presenter
return true;
}
- GamePropertiesDialog fragment =
- GamePropertiesDialog.newInstance(holder.gameFile.getPath(), gameId,
- holder.gameFile.getPlatform());
+ GamePropertiesDialog fragment = GamePropertiesDialog.newInstance(holder.gameFile.getPath(),
+ gameId, holder.gameFile.getRevision(), holder.gameFile.getPlatform());
+
((FragmentActivity) view.getContext()).getSupportFragmentManager().beginTransaction()
.add(fragment, GamePropertiesDialog.TAG).commit();
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java
index b60713fb8b..15521e6043 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java
@@ -24,15 +24,18 @@ public class GamePropertiesDialog extends DialogFragment
public static final String TAG = "GamePropertiesDialog";
public static final String ARG_PATH = "path";
public static final String ARG_GAMEID = "game_id";
+ public static final String ARG_REVISION = "revision";
public static final String ARG_PLATFORM = "platform";
- public static GamePropertiesDialog newInstance(String path, String gameId, int platform)
+ public static GamePropertiesDialog newInstance(String path, String gameId, int revision,
+ int platform)
{
GamePropertiesDialog fragment = new GamePropertiesDialog();
Bundle arguments = new Bundle();
arguments.putString(ARG_PATH, path);
arguments.putString(ARG_GAMEID, gameId);
+ arguments.putInt(ARG_REVISION, revision);
arguments.putInt(ARG_PLATFORM, platform);
fragment.setArguments(arguments);
@@ -48,6 +51,7 @@ public class GamePropertiesDialog extends DialogFragment
String path = requireArguments().getString(ARG_PATH);
String gameId = requireArguments().getString(ARG_GAMEID);
+ int revision = requireArguments().getInt(ARG_REVISION);
int platform = requireArguments().getInt(ARG_PLATFORM);
builder.setTitle(requireContext()
@@ -63,26 +67,28 @@ public class GamePropertiesDialog extends DialogFragment
.getSupportFragmentManager(), "game_details");
break;
case 1:
- Settings settings = new Settings();
- settings.loadSettings(null);
- StringSetting.MAIN_DEFAULT_ISO.setString(settings, path);
- settings.saveSettings(null, getContext());
+ try (Settings settings = new Settings())
+ {
+ settings.loadSettings(null);
+ StringSetting.MAIN_DEFAULT_ISO.setString(settings, path);
+ settings.saveSettings(null, getContext());
+ }
break;
case 2:
- SettingsActivity.launch(getContext(), MenuTag.CONFIG, gameId);
+ SettingsActivity.launch(getContext(), MenuTag.CONFIG, gameId, revision);
break;
case 3:
- SettingsActivity.launch(getContext(), MenuTag.GRAPHICS, gameId);
+ SettingsActivity.launch(getContext(), MenuTag.GRAPHICS, gameId, revision);
break;
case 4:
- SettingsActivity.launch(getContext(), MenuTag.GCPAD_TYPE, gameId);
+ SettingsActivity.launch(getContext(), MenuTag.GCPAD_TYPE, gameId, revision);
break;
case 5:
// Clear option for GC, Wii controls for else
if (platform == Platform.GAMECUBE.toInt())
clearGameSettings(gameId);
else
- SettingsActivity.launch(getActivity(), MenuTag.WIIMOTE, gameId);
+ SettingsActivity.launch(getActivity(), MenuTag.WIIMOTE, gameId, revision);
break;
case 6:
clearGameSettings(gameId);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AdHocBooleanSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AdHocBooleanSetting.java
index b7a06d1419..ed14e064fe 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AdHocBooleanSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AdHocBooleanSetting.java
@@ -1,12 +1,17 @@
package org.dolphinemu.dolphinemu.features.settings.model;
-public class AdHocBooleanSetting extends AbstractLegacySetting implements AbstractBooleanSetting
+public class AdHocBooleanSetting implements AbstractBooleanSetting
{
+ private final String mFile;
+ private final String mSection;
+ private final String mKey;
private final boolean mDefaultValue;
public AdHocBooleanSetting(String file, String section, String key, boolean defaultValue)
{
- super(file, section, key);
+ mFile = file;
+ mSection = section;
+ mKey = key;
mDefaultValue = defaultValue;
if (!NativeConfig.isSettingSaveable(file, section, key))
@@ -18,40 +23,18 @@ public class AdHocBooleanSetting extends AbstractLegacySetting implements Abstra
@Override
public boolean delete(Settings settings)
{
- if (!settings.isGameSpecific())
- {
- return NativeConfig.deleteKey(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey);
- }
- else
- {
- return settings.getSection(mFile, mSection).delete(mKey);
- }
+ return NativeConfig.deleteKey(settings.getActiveLayer(), mFile, mSection, mKey);
}
@Override
public boolean getBoolean(Settings settings)
{
- if (!settings.isGameSpecific())
- {
- return NativeConfig.getBoolean(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey,
- mDefaultValue);
- }
- else
- {
- return settings.getSection(mFile, mSection).getBoolean(mKey, mDefaultValue);
- }
+ return NativeConfig.getBoolean(settings.getActiveLayer(), mFile, mSection, mKey, mDefaultValue);
}
@Override
public void setBoolean(Settings settings, boolean newValue)
{
- if (!settings.isGameSpecific())
- {
- NativeConfig.setBoolean(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey, newValue);
- }
- else
- {
- settings.getSection(mFile, mSection).setBoolean(mKey, newValue);
- }
+ NativeConfig.setBoolean(settings.getActiveLayer(), mFile, mSection, mKey, newValue);
}
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
index fedfd1144c..3a5335cd9b 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
@@ -110,9 +110,9 @@ public enum BooleanSetting implements AbstractBooleanSetting
@Override
public boolean delete(Settings settings)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- return NativeConfig.deleteKey(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey);
+ return NativeConfig.deleteKey(settings.getActiveLayer(), mFile, mSection, mKey);
}
else
{
@@ -123,9 +123,9 @@ public enum BooleanSetting implements AbstractBooleanSetting
@Override
public boolean getBoolean(Settings settings)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- return NativeConfig.getBoolean(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey,
+ return NativeConfig.getBoolean(settings.getActiveLayer(), mFile, mSection, mKey,
mDefaultValue);
}
else
@@ -137,9 +137,9 @@ public enum BooleanSetting implements AbstractBooleanSetting
@Override
public void setBoolean(Settings settings, boolean newValue)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- NativeConfig.setBoolean(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey, newValue);
+ NativeConfig.setBoolean(settings.getActiveLayer(), mFile, mSection, mKey, newValue);
}
else
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/FloatSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/FloatSetting.java
index c76adcb25d..a2d50962ce 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/FloatSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/FloatSetting.java
@@ -23,9 +23,9 @@ public enum FloatSetting implements AbstractFloatSetting
@Override
public boolean delete(Settings settings)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- return NativeConfig.deleteKey(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey);
+ return NativeConfig.deleteKey(settings.getActiveLayer(), mFile, mSection, mKey);
}
else
{
@@ -36,10 +36,9 @@ public enum FloatSetting implements AbstractFloatSetting
@Override
public float getFloat(Settings settings)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- return NativeConfig.getFloat(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey,
- mDefaultValue);
+ return NativeConfig.getFloat(settings.getActiveLayer(), mFile, mSection, mKey, mDefaultValue);
}
else
{
@@ -50,9 +49,9 @@ public enum FloatSetting implements AbstractFloatSetting
@Override
public void setFloat(Settings settings, float newValue)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- NativeConfig.setFloat(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey, newValue);
+ NativeConfig.setFloat(settings.getActiveLayer(), mFile, mSection, mKey, newValue);
}
else
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java
index c7b89a79d9..12d0a5fb1f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java
@@ -50,9 +50,9 @@ public enum IntSetting implements AbstractIntSetting
@Override
public boolean delete(Settings settings)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- return NativeConfig.deleteKey(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey);
+ return NativeConfig.deleteKey(settings.getActiveLayer(), mFile, mSection, mKey);
}
else
{
@@ -63,10 +63,9 @@ public enum IntSetting implements AbstractIntSetting
@Override
public int getInt(Settings settings)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- return NativeConfig.getInt(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey,
- mDefaultValue);
+ return NativeConfig.getInt(settings.getActiveLayer(), mFile, mSection, mKey, mDefaultValue);
}
else
{
@@ -77,9 +76,9 @@ public enum IntSetting implements AbstractIntSetting
@Override
public void setInt(Settings settings, int newValue)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- NativeConfig.setInt(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey, newValue);
+ NativeConfig.setInt(settings.getActiveLayer(), mFile, mSection, mKey, newValue);
}
else
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/NativeConfig.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/NativeConfig.java
index 153e245d94..78545bbace 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/NativeConfig.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/NativeConfig.java
@@ -7,6 +7,10 @@ public class NativeConfig
public static native boolean isSettingSaveable(String file, String section, String key);
+ public static native void loadGameInis(String gameId, int revision);
+
+ public static native void unloadGameInis();
+
public static native void save(int layer);
public static native boolean deleteKey(int layer, String file, String section, String key);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
index 5a63a3b654..6e414dca8a 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
@@ -10,10 +10,11 @@ import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
import org.dolphinemu.dolphinemu.services.GameFileCacheService;
import org.dolphinemu.dolphinemu.utils.IniFile;
+import java.io.Closeable;
import java.util.HashMap;
import java.util.Map;
-public class Settings
+public class Settings implements Closeable
{
public static final String FILE_DOLPHIN = "Dolphin";
public static final String FILE_GFX = "GFX";
@@ -48,7 +49,8 @@ public class Settings
public static final String GAME_SETTINGS_PLACEHOLDER_FILE_NAME = "";
- private String gameId;
+ private String mGameId;
+ private int mRevision;
private static final String[] configFiles = new String[]{FILE_DOLPHIN, FILE_GFX, FILE_LOGGER,
FILE_WIIMOTE};
@@ -80,7 +82,12 @@ public class Settings
public boolean isGameSpecific()
{
- return !TextUtils.isEmpty(gameId);
+ return !TextUtils.isEmpty(mGameId);
+ }
+
+ public int getActiveLayer()
+ {
+ return isGameSpecific() ? NativeConfig.LAYER_LOCAL_GAME : NativeConfig.LAYER_BASE_OR_CURRENT;
}
public boolean isEmpty()
@@ -98,7 +105,8 @@ public class Settings
}
else
{
- loadCustomGameSettings(gameId, view);
+ NativeConfig.loadGameInis(mGameId, mRevision);
+ loadCustomGameSettings(mGameId, view);
}
mLoadedRecursiveIsoPathsValue = BooleanSetting.MAIN_RECURSIVE_ISO_PATHS.getBoolean(this);
@@ -126,9 +134,10 @@ public class Settings
SettingsFile.readWiimoteProfile(gameId, getGameSpecificFile(), padId);
}
- public void loadSettings(String gameId, SettingsActivityView view)
+ public void loadSettings(String gameId, int revision, SettingsActivityView view)
{
- this.gameId = gameId;
+ mGameId = gameId;
+ mRevision = revision;
loadSettings(view);
}
@@ -163,9 +172,11 @@ public class Settings
// custom game settings
if (context != null)
- Toast.makeText(context, "Saved settings for " + gameId, Toast.LENGTH_SHORT).show();
+ Toast.makeText(context, "Saved settings for " + mGameId, Toast.LENGTH_SHORT).show();
- SettingsFile.saveCustomGameSettings(gameId, getGameSpecificFile());
+ SettingsFile.saveCustomGameSettings(mGameId, getGameSpecificFile());
+
+ NativeConfig.save(NativeConfig.LAYER_LOCAL_GAME);
}
}
@@ -202,4 +213,13 @@ public class Settings
return getSection(Settings.FILE_DOLPHIN, SECTION_INI_INTERFACE).exists("ThemeName");
}
+
+ @Override
+ public void close()
+ {
+ if (isGameSpecific())
+ {
+ NativeConfig.unloadGameInis();
+ }
+ }
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java
index 14bf34221c..5862a452bd 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java
@@ -36,9 +36,9 @@ public enum StringSetting implements AbstractStringSetting
@Override
public boolean delete(Settings settings)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- return NativeConfig.deleteKey(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey);
+ return NativeConfig.deleteKey(settings.getActiveLayer(), mFile, mSection, mKey);
}
else
{
@@ -49,9 +49,9 @@ public enum StringSetting implements AbstractStringSetting
@Override
public String getString(Settings settings)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- return NativeConfig.getString(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey,
+ return NativeConfig.getString(settings.getActiveLayer(), mFile, mSection, mKey,
mDefaultValue);
}
else
@@ -63,9 +63,9 @@ public enum StringSetting implements AbstractStringSetting
@Override
public void setString(Settings settings, String newValue)
{
- if (NativeConfig.isSettingSaveable(mFile, mSection, mKey) && !settings.isGameSpecific())
+ if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
- NativeConfig.setString(NativeConfig.LAYER_BASE_OR_CURRENT, mFile, mSection, mKey, newValue);
+ NativeConfig.setString(settings.getActiveLayer(), mFile, mSection, mKey, newValue);
}
else
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
index 07e2340be9..e043b36f24 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
@@ -26,16 +26,27 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
{
private static final String ARG_MENU_TAG = "menu_tag";
private static final String ARG_GAME_ID = "game_id";
+ private static final String ARG_REVISION = "revision";
private static final String FRAGMENT_TAG = "settings";
private SettingsActivityPresenter mPresenter;
private ProgressDialog dialog;
- public static void launch(Context context, MenuTag menuTag, String gameId)
+ public static void launch(Context context, MenuTag menuTag, String gameId, int revision)
{
Intent settings = new Intent(context, SettingsActivity.class);
settings.putExtra(ARG_MENU_TAG, menuTag);
settings.putExtra(ARG_GAME_ID, gameId);
+ settings.putExtra(ARG_REVISION, revision);
+ context.startActivity(settings);
+ }
+
+ public static void launch(Context context, MenuTag menuTag)
+ {
+ Intent settings = new Intent(context, SettingsActivity.class);
+ settings.putExtra(ARG_MENU_TAG, menuTag);
+ settings.putExtra(ARG_GAME_ID, "");
+ settings.putExtra(ARG_REVISION, 0);
context.startActivity(settings);
}
@@ -57,10 +68,11 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
Intent launcher = getIntent();
String gameID = launcher.getStringExtra(ARG_GAME_ID);
+ int revision = launcher.getIntExtra(ARG_REVISION, 0);
MenuTag menuTag = (MenuTag) launcher.getSerializableExtra(ARG_MENU_TAG);
mPresenter = new SettingsActivityPresenter(this, getSettings());
- mPresenter.onCreate(savedInstanceState, menuTag, gameID, getApplicationContext());
+ mPresenter.onCreate(savedInstanceState, menuTag, gameID, revision, getApplicationContext());
}
@Override
@@ -95,18 +107,23 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
/**
* If this is called, the user has left the settings screen (potentially through the
- * home button) and will expect their changes to be persisted. So we kick off an
- * IntentService which will do so on a background thread.
+ * home button) and will expect their changes to be persisted.
*/
@Override
protected void onStop()
{
super.onStop();
-
mPresenter.onStop(isFinishing());
}
@Override
+ protected void onDestroy()
+ {
+ super.onDestroy();
+ mPresenter.onDestroy();
+ }
+
+ @Override
public void showSettingsFragment(MenuTag menuTag, Bundle extras, boolean addToStack,
String gameID)
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
index 6f24bbfc28..c954bfe516 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
@@ -24,6 +24,7 @@ public final class SettingsActivityPresenter
private MenuTag menuTag;
private String gameId;
+ private int revision;
private Context context;
SettingsActivityPresenter(SettingsActivityView view, Settings settings)
@@ -32,15 +33,26 @@ public final class SettingsActivityPresenter
mSettings = settings;
}
- public void onCreate(Bundle savedInstanceState, MenuTag menuTag, String gameId, Context context)
+ public void onCreate(Bundle savedInstanceState, MenuTag menuTag, String gameId, int revision,
+ Context context)
{
this.menuTag = menuTag;
this.gameId = gameId;
+ this.revision = revision;
this.context = context;
mShouldSave = savedInstanceState != null && savedInstanceState.getBoolean(KEY_SHOULD_SAVE);
}
+ public void onDestroy()
+ {
+ if (mSettings != null)
+ {
+ mSettings.close();
+ mSettings = null;
+ }
+ }
+
public void onStart()
{
prepareDolphinDirectoriesIfNeeded();
@@ -52,7 +64,7 @@ public final class SettingsActivityPresenter
{
if (!TextUtils.isEmpty(gameId))
{
- mSettings.loadSettings(gameId, mView);
+ mSettings.loadSettings(gameId, revision, mView);
if (mSettings.gameIniContainsJunk())
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFileCache.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFileCache.java
index 87285f5eb3..5672553711 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFileCache.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFileCache.java
@@ -81,9 +81,12 @@ public class GameFileCache
*/
public boolean scanLibrary(Context context)
{
- Settings settings = new Settings();
- settings.loadSettings(null);
- boolean recursiveScan = BooleanSetting.MAIN_RECURSIVE_ISO_PATHS.getBoolean(settings);
+ boolean recursiveScan;
+ try (Settings settings = new Settings())
+ {
+ settings.loadSettings(null);
+ recursiveScan = BooleanSetting.MAIN_RECURSIVE_ISO_PATHS.getBoolean(settings);
+ }
removeNonExistentGameFolders(context);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
index 2728bc980a..dbe5439669 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
@@ -143,7 +143,7 @@ public final class MainActivity extends AppCompatActivity implements MainView
@Override
public void launchSettingsActivity(MenuTag menuTag)
{
- SettingsActivity.launch(this, menuTag, "");
+ SettingsActivity.launch(this, menuTag);
}
@Override
@@ -270,19 +270,23 @@ public final class MainActivity extends AppCompatActivity implements MainView
{
super.onTabSelected(tab);
- Settings settings = new Settings();
- settings.loadSettings(null);
+ try (Settings settings = new Settings())
+ {
+ settings.loadSettings(null);
- IntSetting.MAIN_LAST_PLATFORM_TAB.setInt(settings, tab.getPosition());
+ IntSetting.MAIN_LAST_PLATFORM_TAB.setInt(settings, tab.getPosition());
- // Context is set to null to avoid toasts
- settings.saveSettings(null, null);
+ // Context is set to null to avoid toasts
+ settings.saveSettings(null, null);
+ }
}
});
- Settings settings = new Settings();
- settings.loadSettings(null);
- mViewPager.setCurrentItem(IntSetting.MAIN_LAST_PLATFORM_TAB.getInt(settings));
+ try (Settings settings = new Settings())
+ {
+ settings.loadSettings(null);
+ mViewPager.setCurrentItem(IntSetting.MAIN_LAST_PLATFORM_TAB.getInt(settings));
+ }
showGames();
GameFileCacheService.startLoad(this);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
index cf75b07c40..ac2ae2d2be 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
@@ -145,7 +145,7 @@ public final class TvMainActivity extends FragmentActivity implements MainView
@Override
public void launchSettingsActivity(MenuTag menuTag)
{
- SettingsActivity.launch(this, menuTag, "");
+ SettingsActivity.launch(this, menuTag);
}
@Override
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java
index 8848db4ad7..062f694219 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java
@@ -30,6 +30,10 @@ public class Analytics
{
showMessage(context, settings);
}
+ else
+ {
+ settings.close();
+ }
});
}
@@ -56,6 +60,8 @@ public class Analytics
// Context is set to null to avoid toasts
settings.saveSettings(null, null);
+
+ settings.close();
}
public static void sendReport(String endpoint, byte[] data)