Cleaned UpdatePermissions calls on SOP and SOG to eliminate redundant properties packet sends and so one part is not telling a different part what to do. That should be up to the SOG to manage permissions on its parts and notify clients when one of them changes.

This commit is contained in:
Dan Lake
2011-11-10 15:20:21 -08:00
parent f3fea81936
commit 9359293b11
2 changed files with 15 additions and 19 deletions

View File

@@ -1873,7 +1873,7 @@ namespace OpenSim.Region.Framework.Scenes
}
/// <summary>
/// Send metadata about the root prim (name, description, sale price, etc.) to a client.
/// Send metadata about the root prim (name, description, sale price, permissions, etc.) to a client.
/// </summary>
/// <param name="client"></param>
public void SendPropertiesToClient(IClientAPI client)
@@ -2481,6 +2481,11 @@ namespace OpenSim.Region.Framework.Scenes
parts[i].UpdatePermissions(AgentID, field, localID, mask, addRemTF);
HasGroupChanged = true;
// Send the group's properties to all clients once all parts are updated
IClientAPI client;
if (Scene.TryGetClient(AgentID, out client))
SendPropertiesToClient(client);
}
#endregion

View File

@@ -1338,22 +1338,6 @@ namespace OpenSim.Region.Framework.Scenes
client.SendObjectPropertiesReply(this);
}
/// <summary>
/// For the scene object group to which this part belongs, send that scene object's root part properties to a client.
/// </summary>
/// <param name="AgentID"></param>
private void SendRootPartPropertiesToClient(UUID AgentID)
{
m_parentGroup.Scene.ForEachClient(delegate(IClientAPI client)
{
// Ugly reference :(
if (client.AgentId == AgentID)
{
m_parentGroup.SendPropertiesToClient(client);
}
});
}
// TODO: unused:
// private void handleTimerAccounting(uint localID, double interval)
// {
@@ -4214,6 +4198,15 @@ namespace OpenSim.Region.Framework.Scenes
}
}
/// <summary>
/// Update permissions on the SOP. Should only be called from SOG.UpdatePermissions because the SOG
/// will handle the client notifications once all of its parts are updated.
/// </summary>
/// <param name="AgentID"></param>
/// <param name="field"></param>
/// <param name="localID"></param>
/// <param name="mask"></param>
/// <param name="addRemTF"></param>
public void UpdatePermissions(UUID AgentID, byte field, uint localID, uint mask, byte addRemTF)
{
bool set = addRemTF == 1;
@@ -4262,8 +4255,6 @@ namespace OpenSim.Region.Framework.Scenes
}
SendFullUpdateToAllClients();
SendRootPartPropertiesToClient(AgentID);
}
}