aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-10-29 02:42:53 +0100
committerJustin Clark-Casey (justincc)2011-10-29 02:42:53 +0100
commit6d97545b6bdf1b9a468f9116fe3070c5d9f9f3c6 (patch)
tree2c54698c55cad641c39b22ba7d90991ffc013ea5
parentAdd taint target velocity for ODECharacters as is already done for ODECharact... (diff)
downloadopensim-SC-6d97545b6bdf1b9a468f9116fe3070c5d9f9f3c6.zip
opensim-SC-6d97545b6bdf1b9a468f9116fe3070c5d9f9f3c6.tar.gz
opensim-SC-6d97545b6bdf1b9a468f9116fe3070c5d9f9f3c6.tar.bz2
opensim-SC-6d97545b6bdf1b9a468f9116fe3070c5d9f9f3c6.tar.xz
Remove the SyncRoot locking from Scene which was only being done around the main physics loop and ScenePresence position and velocity setting
This is no longer necessary with ODECharacter taints (ODEPrim was already not taking part in this). BSCharacter was already tainting.
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs38
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs6
3 files changed, 18 insertions, 32 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 302103a..ff05e95 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -509,12 +509,6 @@ namespace OpenSim.Region.Framework.Scenes
509 } 509 }
510 } 510 }
511 511
512 // This gets locked so things stay thread safe.
513 public object SyncRoot
514 {
515 get { return m_sceneGraph.m_syncRoot; }
516 }
517
518 public string DefaultScriptEngine 512 public string DefaultScriptEngine
519 { 513 {
520 get { return m_defaultScriptEngine; } 514 get { return m_defaultScriptEngine; }
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 542bd51..1af18e7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -84,8 +84,6 @@ namespace OpenSim.Region.Framework.Scenes
84 protected int m_activeScripts = 0; 84 protected int m_activeScripts = 0;
85 protected int m_scriptLPS = 0; 85 protected int m_scriptLPS = 0;
86 86
87 protected internal object m_syncRoot = new object();
88
89 protected internal PhysicsScene _PhyScene; 87 protected internal PhysicsScene _PhyScene;
90 88
91 /// <summary> 89 /// <summary>
@@ -187,26 +185,22 @@ namespace OpenSim.Region.Framework.Scenes
187 /// <returns></returns> 185 /// <returns></returns>
188 protected internal float UpdatePhysics(double elapsed) 186 protected internal float UpdatePhysics(double elapsed)
189 { 187 {
190 lock (m_syncRoot) 188 // Here is where the Scene calls the PhysicsScene. This is a one-way
191 { 189 // interaction; the PhysicsScene cannot access the calling Scene directly.
192 // Here is where the Scene calls the PhysicsScene. This is a one-way 190 // But with joints, we want a PhysicsActor to be able to influence a
193 // interaction; the PhysicsScene cannot access the calling Scene directly. 191 // non-physics SceneObjectPart. In particular, a PhysicsActor that is connected
194 // But with joints, we want a PhysicsActor to be able to influence a 192 // with a joint should be able to move the SceneObjectPart which is the visual
195 // non-physics SceneObjectPart. In particular, a PhysicsActor that is connected 193 // representation of that joint (for editing and serialization purposes).
196 // with a joint should be able to move the SceneObjectPart which is the visual 194 // However the PhysicsActor normally cannot directly influence anything outside
197 // representation of that joint (for editing and serialization purposes). 195 // of the PhysicsScene, and the non-physical SceneObjectPart which represents
198 // However the PhysicsActor normally cannot directly influence anything outside 196 // the joint in the Scene does not exist in the PhysicsScene.
199 // of the PhysicsScene, and the non-physical SceneObjectPart which represents 197 //
200 // the joint in the Scene does not exist in the PhysicsScene. 198 // To solve this, we have an event in the PhysicsScene that is fired when a joint
201 // 199 // has changed position (because one of its associated PhysicsActors has changed
202 // To solve this, we have an event in the PhysicsScene that is fired when a joint 200 // position).
203 // has changed position (because one of its associated PhysicsActors has changed 201 //
204 // position). 202 // Therefore, JointMoved and JointDeactivated events will be fired as a result of the following Simulate().
205 // 203 return _PhyScene.Simulate((float)elapsed);
206 // Therefore, JointMoved and JointDeactivated events will be fired as a result of the following Simulate().
207
208 return _PhyScene.Simulate((float)elapsed);
209 }
210 } 204 }
211 205
212 protected internal void UpdateScenePresenceMovement() 206 protected internal void UpdateScenePresenceMovement()
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 0880e21..bb820aa 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -521,8 +521,7 @@ namespace OpenSim.Region.Framework.Scenes
521 { 521 {
522 try 522 try
523 { 523 {
524 lock (m_scene.SyncRoot) 524 PhysicsActor.Position = value;
525 PhysicsActor.Position = value;
526 } 525 }
527 catch (Exception e) 526 catch (Exception e)
528 { 527 {
@@ -572,8 +571,7 @@ namespace OpenSim.Region.Framework.Scenes
572 { 571 {
573 try 572 try
574 { 573 {
575 lock (m_scene.SyncRoot) 574 PhysicsActor.Velocity = value;
576 PhysicsActor.Velocity = value;
577 } 575 }
578 catch (Exception e) 576 catch (Exception e)
579 { 577 {