mirror of
https://github.com/opensim/opensim.git
synced 2026-08-08 18:25:33 +08:00
ubOde: add a needed lock
This commit is contained in:
@@ -1221,8 +1221,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
/// <param name="obj"></param>
|
||||
public void RemoveCollisionEventReporting(PhysicsActor obj)
|
||||
{
|
||||
if (_collisionEventPrim.Contains(obj) && !_collisionEventPrimRemove.Contains(obj))
|
||||
_collisionEventPrimRemove.Add(obj);
|
||||
lock(_collisionEventPrimRemove)
|
||||
{
|
||||
if (_collisionEventPrim.Contains(obj) && !_collisionEventPrimRemove.Contains(obj))
|
||||
_collisionEventPrimRemove.Add(obj);
|
||||
}
|
||||
}
|
||||
|
||||
public override float TimeDilation
|
||||
@@ -1759,10 +1762,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
prm.SleeperAddCollisionEvents();
|
||||
sleepers.Clear();
|
||||
|
||||
foreach (PhysicsActor obj in _collisionEventPrimRemove)
|
||||
_collisionEventPrim.Remove(obj);
|
||||
lock(_collisionEventPrimRemove)
|
||||
{
|
||||
foreach (PhysicsActor obj in _collisionEventPrimRemove)
|
||||
_collisionEventPrim.Remove(obj);
|
||||
|
||||
_collisionEventPrimRemove.Clear();
|
||||
_collisionEventPrimRemove.Clear();
|
||||
}
|
||||
|
||||
// do a ode simulation step
|
||||
d.WorldQuickStep(world, ODE_STEPSIZE);
|
||||
|
||||
Reference in New Issue
Block a user