From 286124852064acafd9c4225ae6facc33b40f9637 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Tue, 13 Oct 2020 16:17:26 +0200 Subject: 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. --- Source/Android/jni/NativeConfig.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'Source/Android/jni/NativeConfig.cpp') 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 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 -- cgit v1.2.3