aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics')
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs2
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdeScene.cs30
2 files changed, 16 insertions, 16 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
index 54b69a2..f3b0630 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
@@ -1270,7 +1270,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1270 1270
1271 public override void UnSubscribeEvents() 1271 public override void UnSubscribeEvents()
1272 { 1272 {
1273 CollisionEventsThisFrame.Clear(); 1273 _parent_scene.RemoveCollisionEventReporting(this);
1274 1274
1275 // Don't clear collision event reporting here. This is called directly from scene code and so can lead 1275 // Don't clear collision event reporting here. This is called directly from scene code and so can lead
1276 // to a race condition with the simulate loop 1276 // to a race condition with the simulate loop
diff --git a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
index c6ecc68..32e81e2 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
@@ -387,12 +387,12 @@ namespace OpenSim.Region.Physics.OdePlugin
387 /// <summary> 387 /// <summary>
388 /// A dictionary of actors that should receive collision events. 388 /// A dictionary of actors that should receive collision events.
389 /// </summary> 389 /// </summary>
390 private readonly Dictionary<uint, PhysicsActor> _collisionEventPrim = new Dictionary<uint, PhysicsActor>(); 390 private readonly Dictionary<uint, PhysicsActor> m_collisionEventActors = new Dictionary<uint, PhysicsActor>();
391 391
392 /// <summary> 392 /// <summary>
393 /// A dictionary of collision event changes that are waiting to be processed. 393 /// A dictionary of collision event changes that are waiting to be processed.
394 /// </summary> 394 /// </summary>
395 private readonly Dictionary<uint, PhysicsActor> _collisionEventPrimChanges = new Dictionary<uint, PhysicsActor>(); 395 private readonly Dictionary<uint, PhysicsActor> m_collisionEventActorsChanges = new Dictionary<uint, PhysicsActor>();
396 396
397 /// <summary> 397 /// <summary>
398 /// Maps a unique geometry id (a memory location) to a physics actor name. 398 /// Maps a unique geometry id (a memory location) to a physics actor name.
@@ -1908,8 +1908,8 @@ namespace OpenSim.Region.Physics.OdePlugin
1908 { 1908 {
1909// m_log.DebugFormat("[PHYSICS]: Adding {0} {1} to collision event reporting", obj.SOPName, obj.LocalID); 1909// m_log.DebugFormat("[PHYSICS]: Adding {0} {1} to collision event reporting", obj.SOPName, obj.LocalID);
1910 1910
1911 lock (_collisionEventPrimChanges) 1911 lock (m_collisionEventActorsChanges)
1912 _collisionEventPrimChanges[obj.LocalID] = obj; 1912 m_collisionEventActorsChanges[obj.LocalID] = obj;
1913 } 1913 }
1914 1914
1915 /// <summary> 1915 /// <summary>
@@ -1920,8 +1920,8 @@ namespace OpenSim.Region.Physics.OdePlugin
1920 { 1920 {
1921// m_log.DebugFormat("[PHYSICS]: Removing {0} {1} from collision event reporting", obj.SOPName, obj.LocalID); 1921// m_log.DebugFormat("[PHYSICS]: Removing {0} {1} from collision event reporting", obj.SOPName, obj.LocalID);
1922 1922
1923 lock (_collisionEventPrimChanges) 1923 lock (m_collisionEventActorsChanges)
1924 _collisionEventPrimChanges[obj.LocalID] = null; 1924 m_collisionEventActorsChanges[obj.LocalID] = null;
1925 } 1925 }
1926 1926
1927 #region Add/Remove Entities 1927 #region Add/Remove Entities
@@ -2930,17 +2930,17 @@ namespace OpenSim.Region.Physics.OdePlugin
2930 // We change _collisionEventPrimChanges to avoid locking _collisionEventPrim itself and causing potential 2930 // We change _collisionEventPrimChanges to avoid locking _collisionEventPrim itself and causing potential
2931 // deadlock if the collision event tries to lock something else later on which is already locked by a 2931 // deadlock if the collision event tries to lock something else later on which is already locked by a
2932 // caller that is adding or removing the collision event. 2932 // caller that is adding or removing the collision event.
2933 lock (_collisionEventPrimChanges) 2933 lock (m_collisionEventActorsChanges)
2934 { 2934 {
2935 foreach (KeyValuePair<uint, PhysicsActor> kvp in _collisionEventPrimChanges) 2935 foreach (KeyValuePair<uint, PhysicsActor> kvp in m_collisionEventActorsChanges)
2936 { 2936 {
2937 if (kvp.Value == null) 2937 if (kvp.Value == null)
2938 _collisionEventPrim.Remove(kvp.Key); 2938 m_collisionEventActors.Remove(kvp.Key);
2939 else 2939 else
2940 _collisionEventPrim[kvp.Key] = kvp.Value; 2940 m_collisionEventActors[kvp.Key] = kvp.Value;
2941 } 2941 }
2942 2942
2943 _collisionEventPrimChanges.Clear(); 2943 m_collisionEventActorsChanges.Clear();
2944 } 2944 }
2945 2945
2946 if (SupportsNINJAJoints) 2946 if (SupportsNINJAJoints)
@@ -3092,7 +3092,7 @@ namespace OpenSim.Region.Physics.OdePlugin
3092 tempTick = tempTick2; 3092 tempTick = tempTick2;
3093 } 3093 }
3094 3094
3095 foreach (PhysicsActor obj in _collisionEventPrim.Values) 3095 foreach (PhysicsActor obj in m_collisionEventActors.Values)
3096 { 3096 {
3097// m_log.DebugFormat("[PHYSICS]: Assessing {0} {1} for collision events", obj.SOPName, obj.LocalID); 3097// m_log.DebugFormat("[PHYSICS]: Assessing {0} {1} for collision events", obj.SOPName, obj.LocalID);
3098 3098
@@ -3227,10 +3227,10 @@ namespace OpenSim.Region.Physics.OdePlugin
3227 } 3227 }
3228 3228
3229 tickCountFrameRun = Util.EnvironmentTickCount(); 3229 tickCountFrameRun = Util.EnvironmentTickCount();
3230 }
3231 3230
3232 if (CollectStats) 3231 if (CollectStats)
3233 m_stats[ODETotalFrameMsStatName] += Util.EnvironmentTickCountSubtract(startFrameTick); 3232 m_stats[ODETotalFrameMsStatName] += Util.EnvironmentTickCountSubtract(startFrameTick);
3233 }
3234 3234
3235 return fps; 3235 return fps;
3236 } 3236 }