mirror of
https://github.com/opensim/opensim.git
synced 2026-08-01 22:26:09 +08:00
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:
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user