diff options
author | Dan Lake | 2011-11-10 15:20:21 -0800 |
---|---|---|
committer | Dan Lake | 2011-11-10 15:20:21 -0800 |
commit | 9359293b11dfd0db82ba3ce8110b0014afbde88f (patch) | |
tree | 5ec72bb8306bf6eebbf0fd192de73619e2e9e68b /OpenSim/Region/Framework | |
parent | Merge branch 'master' of git://opensimulator.org/git/opensim (diff) | |
download | opensim-SC-9359293b11dfd0db82ba3ce8110b0014afbde88f.zip opensim-SC-9359293b11dfd0db82ba3ce8110b0014afbde88f.tar.gz opensim-SC-9359293b11dfd0db82ba3ce8110b0014afbde88f.tar.bz2 opensim-SC-9359293b11dfd0db82ba3ce8110b0014afbde88f.tar.xz |
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.
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 7 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 27 |
2 files changed, 15 insertions, 19 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 3fa6bb0..4355394 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1873,7 +1873,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1873 | } | 1873 | } |
1874 | 1874 | ||
1875 | /// <summary> | 1875 | /// <summary> |
1876 | /// Send metadata about the root prim (name, description, sale price, etc.) to a client. | 1876 | /// Send metadata about the root prim (name, description, sale price, permissions, etc.) to a client. |
1877 | /// </summary> | 1877 | /// </summary> |
1878 | /// <param name="client"></param> | 1878 | /// <param name="client"></param> |
1879 | public void SendPropertiesToClient(IClientAPI client) | 1879 | public void SendPropertiesToClient(IClientAPI client) |
@@ -2481,6 +2481,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
2481 | parts[i].UpdatePermissions(AgentID, field, localID, mask, addRemTF); | 2481 | parts[i].UpdatePermissions(AgentID, field, localID, mask, addRemTF); |
2482 | 2482 | ||
2483 | HasGroupChanged = true; | 2483 | HasGroupChanged = true; |
2484 | |||
2485 | // Send the group's properties to all clients once all parts are updated | ||
2486 | IClientAPI client; | ||
2487 | if (Scene.TryGetClient(AgentID, out client)) | ||
2488 | SendPropertiesToClient(client); | ||
2484 | } | 2489 | } |
2485 | 2490 | ||
2486 | #endregion | 2491 | #endregion |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 4071159..ad60604 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -1338,22 +1338,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1338 | client.SendObjectPropertiesReply(this); | 1338 | client.SendObjectPropertiesReply(this); |
1339 | } | 1339 | } |
1340 | 1340 | ||
1341 | /// <summary> | ||
1342 | /// For the scene object group to which this part belongs, send that scene object's root part properties to a client. | ||
1343 | /// </summary> | ||
1344 | /// <param name="AgentID"></param> | ||
1345 | private void SendRootPartPropertiesToClient(UUID AgentID) | ||
1346 | { | ||
1347 | m_parentGroup.Scene.ForEachClient(delegate(IClientAPI client) | ||
1348 | { | ||
1349 | // Ugly reference :( | ||
1350 | if (client.AgentId == AgentID) | ||
1351 | { | ||
1352 | m_parentGroup.SendPropertiesToClient(client); | ||
1353 | } | ||
1354 | }); | ||
1355 | } | ||
1356 | |||
1357 | // TODO: unused: | 1341 | // TODO: unused: |
1358 | // private void handleTimerAccounting(uint localID, double interval) | 1342 | // private void handleTimerAccounting(uint localID, double interval) |
1359 | // { | 1343 | // { |
@@ -4214,6 +4198,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
4214 | } | 4198 | } |
4215 | } | 4199 | } |
4216 | 4200 | ||
4201 | /// <summary> | ||
4202 | /// Update permissions on the SOP. Should only be called from SOG.UpdatePermissions because the SOG | ||
4203 | /// will handle the client notifications once all of its parts are updated. | ||
4204 | /// </summary> | ||
4205 | /// <param name="AgentID"></param> | ||
4206 | /// <param name="field"></param> | ||
4207 | /// <param name="localID"></param> | ||
4208 | /// <param name="mask"></param> | ||
4209 | /// <param name="addRemTF"></param> | ||
4217 | public void UpdatePermissions(UUID AgentID, byte field, uint localID, uint mask, byte addRemTF) | 4210 | public void UpdatePermissions(UUID AgentID, byte field, uint localID, uint mask, byte addRemTF) |
4218 | { | 4211 | { |
4219 | bool set = addRemTF == 1; | 4212 | bool set = addRemTF == 1; |
@@ -4262,8 +4255,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
4262 | } | 4255 | } |
4263 | 4256 | ||
4264 | SendFullUpdateToAllClients(); | 4257 | SendFullUpdateToAllClients(); |
4265 | |||
4266 | SendRootPartPropertiesToClient(AgentID); | ||
4267 | } | 4258 | } |
4268 | } | 4259 | } |
4269 | 4260 | ||