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.
parent
f3fea81936
commit
9359293b11
OpenSim/Region/Framework/Scenes
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue