add AddOpenSimExtraFeature to simulator features, so it is done under proper locking. Fix gridservice extra features merge (they override older). This does need a future cleanup

This commit is contained in:
UbitUmarov
2020-05-08 16:54:18 +01:00
parent 72c1c923f8
commit fa5b4dc5d8
3 changed files with 29 additions and 16 deletions

View File

@@ -235,6 +235,22 @@ namespace OpenSim.Region.ClientStack.Linden
m_features[name] = value;
}
public void AddOpenSimExtraFeature(string name, OSD value)
{
lock (m_features)
{
OSDMap extrasMap;
if (m_features.TryGetValue("OpenSimExtras", out OSD extra))
extrasMap = extra as OSDMap;
else
{
extrasMap = new OSDMap();
}
extrasMap[name] = value;
m_features["OpenSimExtras"] = extrasMap;
}
}
public bool RemoveFeature(string name)
{
lock (m_features)
@@ -315,9 +331,15 @@ namespace OpenSim.Region.ClientStack.Linden
lock (m_features)
{
OSDMap extrasMap = new OSDMap();
OSDMap extrasMap;
if (m_features.TryGetValue("OpenSimExtras", out OSD extra))
extrasMap = extra as OSDMap;
else
{
extrasMap = new OSDMap();
}
foreach(string key in extraFeatures.Keys)
foreach (string key in extraFeatures.Keys)
{
extrasMap[key] = (string)extraFeatures[key];
@@ -327,7 +349,6 @@ namespace OpenSim.Region.ClientStack.Linden
}
}
m_features["OpenSimExtras"] = extrasMap;
}
}