Don't bother taking OdeLock during OdeScene construction, since there can be no contention until the object is constructed.

0.7.2-post-fixes
Justin Clark-Casey (justincc) 2011-10-18 21:03:41 +01:00
parent d6456b9ea8
commit 1a008b237b
1 changed files with 13 additions and 16 deletions

View File

@ -279,7 +279,7 @@ namespace OpenSim.Region.Physics.OdePlugin
/// <summary> /// <summary>
/// Used to lock the entire physics scene. Locked during the main part of Simulate() /// Used to lock the entire physics scene. Locked during the main part of Simulate()
/// </summary> /// </summary>
public Object OdeLock; internal Object OdeLock = new Object();
public IMesher mesher; public IMesher mesher;
@ -315,27 +315,24 @@ namespace OpenSim.Region.Physics.OdePlugin
m_log m_log
= LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.ToString() + "." + sceneIdentifier); = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.ToString() + "." + sceneIdentifier);
OdeLock = new Object();
nearCallback = near; nearCallback = near;
triCallback = TriCallback; triCallback = TriCallback;
triArrayCallback = TriArrayCallback; triArrayCallback = TriArrayCallback;
m_rayCastManager = new ODERayCastRequestManager(this); m_rayCastManager = new ODERayCastRequestManager(this);
lock (OdeLock)
{
// Create the world and the first space
world = d.WorldCreate();
space = d.HashSpaceCreate(IntPtr.Zero);
contactgroup = d.JointGroupCreate(0); // Create the world and the first space
//contactgroup world = d.WorldCreate();
space = d.HashSpaceCreate(IntPtr.Zero);
d.WorldSetAutoDisableFlag(world, false); contactgroup = d.JointGroupCreate(0);
#if USE_DRAWSTUFF //contactgroup
Thread viewthread = new Thread(new ParameterizedThreadStart(startvisualization)); d.WorldSetAutoDisableFlag(world, false);
viewthread.Start(); #if USE_DRAWSTUFF
#endif
} Thread viewthread = new Thread(new ParameterizedThreadStart(startvisualization));
viewthread.Start();
#endif
_watermap = new float[258 * 258]; _watermap = new float[258 * 258];