Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #9148 from JosJuice/android-active-layer
Android: Fix setting read during play with local game layer active
  • Loading branch information
leoetlino committed Oct 19, 2020
2 parents b3cb088 + 2861248 commit a209410
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 19 deletions.
Expand Up @@ -35,18 +35,18 @@ public boolean isRuntimeEditable()
@Override
public boolean delete(Settings settings)
{
return NativeConfig.deleteKey(settings.getActiveLayer(), mFile, mSection, mKey);
return NativeConfig.deleteKey(settings.getWriteLayer(), mFile, mSection, mKey);
}

@Override
public boolean getBoolean(Settings settings)
{
return NativeConfig.getBoolean(settings.getActiveLayer(), mFile, mSection, mKey, mDefaultValue);
return NativeConfig.getBoolean(NativeConfig.LAYER_ACTIVE, mFile, mSection, mKey, mDefaultValue);
}

@Override
public void setBoolean(Settings settings, boolean newValue)
{
NativeConfig.setBoolean(settings.getActiveLayer(), mFile, mSection, mKey, newValue);
NativeConfig.setBoolean(settings.getWriteLayer(), mFile, mSection, mKey, newValue);
}
}
Expand Up @@ -157,7 +157,7 @@ public boolean delete(Settings settings)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
return NativeConfig.deleteKey(settings.getActiveLayer(), mFile, mSection, mKey);
return NativeConfig.deleteKey(settings.getWriteLayer(), mFile, mSection, mKey);
}
else
{
Expand All @@ -170,7 +170,7 @@ public boolean getBoolean(Settings settings)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
return NativeConfig.getBoolean(settings.getActiveLayer(), mFile, mSection, mKey,
return NativeConfig.getBoolean(NativeConfig.LAYER_ACTIVE, mFile, mSection, mKey,
mDefaultValue);
}
else
Expand All @@ -184,7 +184,7 @@ public void setBoolean(Settings settings, boolean newValue)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
NativeConfig.setBoolean(settings.getActiveLayer(), mFile, mSection, mKey, newValue);
NativeConfig.setBoolean(settings.getWriteLayer(), mFile, mSection, mKey, newValue);
}
else
{
Expand Down
Expand Up @@ -40,7 +40,7 @@ public boolean delete(Settings settings)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
return NativeConfig.deleteKey(settings.getActiveLayer(), mFile, mSection, mKey);
return NativeConfig.deleteKey(settings.getWriteLayer(), mFile, mSection, mKey);
}
else
{
Expand All @@ -53,7 +53,7 @@ public float getFloat(Settings settings)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
return NativeConfig.getFloat(settings.getActiveLayer(), mFile, mSection, mKey, mDefaultValue);
return NativeConfig.getFloat(NativeConfig.LAYER_ACTIVE, mFile, mSection, mKey, mDefaultValue);
}
else
{
Expand All @@ -66,7 +66,7 @@ public void setFloat(Settings settings, float newValue)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
NativeConfig.setFloat(settings.getActiveLayer(), mFile, mSection, mKey, newValue);
NativeConfig.setFloat(settings.getWriteLayer(), mFile, mSection, mKey, newValue);
}
else
{
Expand Down
Expand Up @@ -97,7 +97,7 @@ public boolean delete(Settings settings)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
return NativeConfig.deleteKey(settings.getActiveLayer(), mFile, mSection, mKey);
return NativeConfig.deleteKey(settings.getWriteLayer(), mFile, mSection, mKey);
}
else
{
Expand All @@ -110,7 +110,7 @@ public int getInt(Settings settings)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
return NativeConfig.getInt(settings.getActiveLayer(), mFile, mSection, mKey, mDefaultValue);
return NativeConfig.getInt(NativeConfig.LAYER_ACTIVE, mFile, mSection, mKey, mDefaultValue);
}
else
{
Expand All @@ -123,7 +123,7 @@ public void setInt(Settings settings, int newValue)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
NativeConfig.setInt(settings.getActiveLayer(), mFile, mSection, mKey, newValue);
NativeConfig.setInt(settings.getWriteLayer(), mFile, mSection, mKey, newValue);
}
else
{
Expand Down
Expand Up @@ -4,6 +4,7 @@
{
public static final int LAYER_BASE_OR_CURRENT = 0;
public static final int LAYER_LOCAL_GAME = 1;
public static final int LAYER_ACTIVE = 2;

public static native boolean isSettingSaveable(String file, String section, String key);

Expand Down
Expand Up @@ -86,7 +86,7 @@ public boolean isGameSpecific()
return !TextUtils.isEmpty(mGameId);
}

public int getActiveLayer()
public int getWriteLayer()
{
return isGameSpecific() ? NativeConfig.LAYER_LOCAL_GAME : NativeConfig.LAYER_BASE_OR_CURRENT;
}
Expand Down
Expand Up @@ -70,7 +70,7 @@ public boolean delete(Settings settings)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
return NativeConfig.deleteKey(settings.getActiveLayer(), mFile, mSection, mKey);
return NativeConfig.deleteKey(settings.getWriteLayer(), mFile, mSection, mKey);
}
else
{
Expand All @@ -83,7 +83,7 @@ public String getString(Settings settings)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
return NativeConfig.getString(settings.getActiveLayer(), mFile, mSection, mKey,
return NativeConfig.getString(NativeConfig.LAYER_ACTIVE, mFile, mSection, mKey,
mDefaultValue);
}
else
Expand All @@ -97,7 +97,7 @@ public void setString(Settings settings, String newValue)
{
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
{
NativeConfig.setString(settings.getActiveLayer(), mFile, mSection, mKey, newValue);
NativeConfig.setString(settings.getWriteLayer(), mFile, mSection, mKey, newValue);
}
else
{
Expand Down
17 changes: 14 additions & 3 deletions Source/Android/jni/NativeConfig.cpp
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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>
Expand Down

0 comments on commit a209410

Please sign in to comment.