aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorRobert Adams2015-08-06 19:57:32 -0700
committerRobert Adams2015-08-06 19:57:32 -0700
commitf0417c5d506e5b562344515f6e68668360456d33 (patch)
treeb5197860eff12d5ce2a5cd20044896bf98d32a66 /OpenSim/Region
parentcreate osGetAvatarHomeURI (diff)
downloadopensim-SC-f0417c5d506e5b562344515f6e68668360456d33.zip
opensim-SC-f0417c5d506e5b562344515f6e68668360456d33.tar.gz
opensim-SC-f0417c5d506e5b562344515f6e68668360456d33.tar.bz2
opensim-SC-f0417c5d506e5b562344515f6e68668360456d33.tar.xz
BulletSim: rearrange code and add some tests to try and resolve the
initialization race conditions reported in Mantis 6792. When a region is initializing it seems that the prim initialization code can be interrupted part way through then taints are processed for prims that are not completely there.
Diffstat (limited to '')
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs2
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs11
2 files changed, 7 insertions, 6 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
index d37f29b..87eba33 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
@@ -322,7 +322,7 @@ public abstract class BSLinkset
322 bool ret = true; 322 bool ret = true;
323 this.ForEachMember((member) => 323 this.ForEachMember((member) =>
324 { 324 {
325 if (member.IsIncomplete || member.PrimAssetState == BSPhysObject.PrimAssetCondition.Waiting) 325 if ((!member.IsInitialized) || member.IsIncomplete || member.PrimAssetState == BSPhysObject.PrimAssetCondition.Waiting)
326 { 326 {
327 ret = false; 327 ret = false;
328 return true; // exit loop 328 return true; // exit loop
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
index d20d094..b758408 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
@@ -83,11 +83,6 @@ public abstract class BSPhysObject : PhysicsActor
83 // The collection of things that push me around 83 // The collection of things that push me around
84 PhysicalActors = new BSActorCollection(PhysScene); 84 PhysicalActors = new BSActorCollection(PhysScene);
85 85
86 // Initialize variables kept in base.
87 GravModifier = 1.0f;
88 Gravity = new OMV.Vector3(0f, 0f, BSParam.Gravity);
89 HoverActive = false;
90
91 // We don't have any physical representation yet. 86 // We don't have any physical representation yet.
92 PhysBody = new BulletBody(localID); 87 PhysBody = new BulletBody(localID);
93 PhysShape = new BSShapeNull(); 88 PhysShape = new BSShapeNull();
@@ -96,6 +91,12 @@ public abstract class BSPhysObject : PhysicsActor
96 91
97 PrimAssetState = PrimAssetCondition.Unknown; 92 PrimAssetState = PrimAssetCondition.Unknown;
98 93
94 // Initialize variables kept in base.
95 // Beware that these cause taints to be queued whch can cause race conditions on startup.
96 GravModifier = 1.0f;
97 Gravity = new OMV.Vector3(0f, 0f, BSParam.Gravity);
98 HoverActive = false;
99
99 // Default material type. Also sets Friction, Restitution and Density. 100 // Default material type. Also sets Friction, Restitution and Density.
100 SetMaterial((int)MaterialAttributes.Material.Wood); 101 SetMaterial((int)MaterialAttributes.Material.Wood);
101 102