aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorDan Lake2011-11-10 15:20:21 -0800
committerDan Lake2011-11-10 15:20:21 -0800
commit9359293b11dfd0db82ba3ce8110b0014afbde88f (patch)
tree5ec72bb8306bf6eebbf0fd192de73619e2e9e68b /OpenSim/Region/Framework
parentMerge branch 'master' of git://opensimulator.org/git/opensim (diff)
downloadopensim-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 '')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs7
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs27
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