aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics
diff options
context:
space:
mode:
authordslake2009-10-23 12:12:19 -0400
committerTeravus Ovares (Dan Olivares)2009-10-23 12:14:05 -0400
commit8ba3afb59bc31986b0834a98a161c17dedd03487 (patch)
tree21ecfdf3525dbba028f830006376fc91a8c52c48 /OpenSim/Region/Physics
parentInconsistent locking of SenseRepeaters in Script Engine. (diff)
downloadopensim-SC-8ba3afb59bc31986b0834a98a161c17dedd03487.zip
opensim-SC-8ba3afb59bc31986b0834a98a161c17dedd03487.tar.gz
opensim-SC-8ba3afb59bc31986b0834a98a161c17dedd03487.tar.bz2
opensim-SC-8ba3afb59bc31986b0834a98a161c17dedd03487.tar.xz
Patch from dslake http://opensimulator.org/mantis/view.php?id=4291 0004291: Inconsistent locking of ODE tainted prims
Diffstat (limited to 'OpenSim/Region/Physics')
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs5
1 files changed, 3 insertions, 2 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index 0a065be..f979ce3 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -239,6 +239,7 @@ namespace OpenSim.Region.Physics.OdePlugin
239 private readonly HashSet<OdePrim> _prims = new HashSet<OdePrim>(); 239 private readonly HashSet<OdePrim> _prims = new HashSet<OdePrim>();
240 private readonly HashSet<OdePrim> _activeprims = new HashSet<OdePrim>(); 240 private readonly HashSet<OdePrim> _activeprims = new HashSet<OdePrim>();
241 private readonly HashSet<OdePrim> _taintedPrimH = new HashSet<OdePrim>(); 241 private readonly HashSet<OdePrim> _taintedPrimH = new HashSet<OdePrim>();
242 private readonly Object _taintedPrimLock = new Object();
242 private readonly List<OdePrim> _taintedPrimL = new List<OdePrim>(); 243 private readonly List<OdePrim> _taintedPrimL = new List<OdePrim>();
243 private readonly HashSet<OdeCharacter> _taintedActors = new HashSet<OdeCharacter>(); 244 private readonly HashSet<OdeCharacter> _taintedActors = new HashSet<OdeCharacter>();
244 private readonly List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>(); 245 private readonly List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>();
@@ -2572,7 +2573,7 @@ namespace OpenSim.Region.Physics.OdePlugin
2572 if (prim is OdePrim) 2573 if (prim is OdePrim)
2573 { 2574 {
2574 OdePrim taintedprim = ((OdePrim) prim); 2575 OdePrim taintedprim = ((OdePrim) prim);
2575 lock (_taintedPrimH) 2576 lock (_taintedPrimLock)
2576 { 2577 {
2577 if (!(_taintedPrimH.Contains(taintedprim))) 2578 if (!(_taintedPrimH.Contains(taintedprim)))
2578 { 2579 {
@@ -2700,7 +2701,7 @@ namespace OpenSim.Region.Physics.OdePlugin
2700 // Modify other objects in the scene. 2701 // Modify other objects in the scene.
2701 processedtaints = false; 2702 processedtaints = false;
2702 2703
2703 lock (_taintedPrimL) 2704 lock (_taintedPrimLock)
2704 { 2705 {
2705 foreach (OdePrim prim in _taintedPrimL) 2706 foreach (OdePrim prim in _taintedPrimL)
2706 { 2707 {