diff options
| author | JosJuice <josjuice@gmail.com> | 2020-10-13 16:17:26 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2020-10-13 16:35:33 +0200 |
| commit | 286124852064acafd9c4225ae6facc33b40f9637 (patch) | |
| tree | 7300c318e1d94e31545bbd6b6c0e735473096093 /Source/Android/jni/NativeConfig.cpp | |
| parent | dcaf2b96251b9a292bc5c122c1f76fbc552f55d3 (diff) | |
Android: Fix setting read during play with local game layer active
During emulation, when LocalGame has a value but CurrentRun
doesn't, we want to read from LocalGame, not CurrentRun. This
change exposes a LAYER_ACTIVE option that handles this correctly.
Diffstat (limited to 'Source/Android/jni/NativeConfig.cpp')
| -rw-r--r-- | Source/Android/jni/NativeConfig.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/Source/Android/jni/NativeConfig.cpp b/Source/Android/jni/NativeConfig.cpp index dfc90329af..636514a3ed 100644 --- a/Source/Android/jni/NativeConfig.cpp +++ b/Source/Android/jni/NativeConfig.cpp @@ -15,6 +15,7 @@ constexpr jint LAYER_BASE_OR_CURRENT = 0; constexpr jint LAYER_LOCAL_GAME = 1; +constexpr jint LAYER_ACTIVE = 2; static Config::Location GetLocation(JNIEnv* env, jstring file, jstring section, jstring key) { @@ -48,21 +49,31 @@ static Config::Location GetLocation(JNIEnv* env, jstring file, jstring section, static std::shared_ptr<Config::Layer> GetLayer(jint layer, const Config::Location& location) { + Config::LayerType layer_type; + switch (layer) { case LAYER_BASE_OR_CURRENT: if (GetActiveLayerForConfig(location) == Config::LayerType::Base) - return Config::GetLayer(Config::LayerType::Base); + layer_type = Config::LayerType::Base; else - return Config::GetLayer(Config::LayerType::CurrentRun); + layer_type = Config::LayerType::CurrentRun; + break; case LAYER_LOCAL_GAME: - return Config::GetLayer(Config::LayerType::LocalGame); + layer_type = Config::LayerType::LocalGame; + break; + + case LAYER_ACTIVE: + layer_type = Config::GetActiveLayerForConfig(location); + break; default: ASSERT(false); return nullptr; } + + return Config::GetLayer(layer_type); } template <typename T> |
