diff options
author | dslake | 2009-10-23 12:12:19 -0400 |
---|---|---|
committer | Teravus Ovares (Dan Olivares) | 2009-10-23 12:14:05 -0400 |
commit | 8ba3afb59bc31986b0834a98a161c17dedd03487 (patch) | |
tree | 21ecfdf3525dbba028f830006376fc91a8c52c48 | |
parent | Inconsistent locking of SenseRepeaters in Script Engine. (diff) | |
download | opensim-SC_OLD-8ba3afb59bc31986b0834a98a161c17dedd03487.zip opensim-SC_OLD-8ba3afb59bc31986b0834a98a161c17dedd03487.tar.gz opensim-SC_OLD-8ba3afb59bc31986b0834a98a161c17dedd03487.tar.bz2 opensim-SC_OLD-8ba3afb59bc31986b0834a98a161c17dedd03487.tar.xz |
Patch from dslake http://opensimulator.org/mantis/view.php?id=4291 0004291: Inconsistent locking of ODE tainted prims
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 5 |
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 | { |