aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs41
1 files changed, 26 insertions, 15 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 42481ff..eacd219 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -126,7 +126,10 @@ namespace OpenSim.Region.Framework.Scenes
126 } 126 }
127 else 127 else
128 { 128 {
129 m_partsLock.ExitReadLock(); 129 if (m_partsLock.RecursiveReadCount > 0)
130 {
131 m_partsLock.ExitReadLock();
132 }
130 } 133 }
131 } 134 }
132 public void lockPartsForWrite(bool locked) 135 public void lockPartsForWrite(bool locked)
@@ -155,7 +158,10 @@ namespace OpenSim.Region.Framework.Scenes
155 } 158 }
156 else 159 else
157 { 160 {
158 m_partsLock.ExitWriteLock(); 161 if (m_partsLock.RecursiveWriteCount > 0)
162 {
163 m_partsLock.ExitWriteLock();
164 }
159 } 165 }
160 } 166 }
161 167
@@ -2292,14 +2298,14 @@ namespace OpenSim.Region.Framework.Scenes
2292 public void LinkToGroup(SceneObjectGroup objectGroup) 2298 public void LinkToGroup(SceneObjectGroup objectGroup)
2293 { 2299 {
2294 // Make sure we have sent any pending unlinks or stuff. 2300 // Make sure we have sent any pending unlinks or stuff.
2295 if (objectGroup.RootPart.UpdateFlag > 0) 2301 //if (objectGroup.RootPart.UpdateFlag > 0)
2296 { 2302 //{
2297 m_log.WarnFormat( 2303 // m_log.WarnFormat(
2298 "[SCENE OBJECT GROUP]: Forcing send of linkset {0}, {1} to {2}, {3} as its still waiting.", 2304 // "[SCENE OBJECT GROUP]: Forcing send of linkset {0}, {1} to {2}, {3} as its still waiting.",
2299 objectGroup.RootPart.Name, objectGroup.RootPart.UUID, RootPart.Name, RootPart.UUID); 2305 // objectGroup.RootPart.Name, objectGroup.RootPart.UUID, RootPart.Name, RootPart.UUID);
2300 2306
2301 objectGroup.RootPart.SendScheduledUpdates(); 2307 // objectGroup.RootPart.SendScheduledUpdates();
2302 } 2308 //}
2303 2309
2304// m_log.DebugFormat( 2310// m_log.DebugFormat(
2305// "[SCENE OBJECT GROUP]: Linking group with root part {0}, {1} to group with root part {2}, {3}", 2311// "[SCENE OBJECT GROUP]: Linking group with root part {0}, {1} to group with root part {2}, {3}",
@@ -2389,8 +2395,8 @@ namespace OpenSim.Region.Framework.Scenes
2389 // unmoved prims! 2395 // unmoved prims!
2390 ResetChildPrimPhysicsPositions(); 2396 ResetChildPrimPhysicsPositions();
2391 2397
2392 HasGroupChanged = true; 2398 //HasGroupChanged = true;
2393 ScheduleGroupForFullUpdate(); 2399 //ScheduleGroupForFullUpdate();
2394 } 2400 }
2395 2401
2396 /// <summary> 2402 /// <summary>
@@ -2483,8 +2489,8 @@ namespace OpenSim.Region.Framework.Scenes
2483 2489
2484 linkPart.Rezzed = RootPart.Rezzed; 2490 linkPart.Rezzed = RootPart.Rezzed;
2485 2491
2486 HasGroupChanged = true; 2492 //HasGroupChanged = true;
2487 ScheduleGroupForFullUpdate(); 2493 //ScheduleGroupForFullUpdate();
2488 } 2494 }
2489 2495
2490 /// <summary> 2496 /// <summary>
@@ -2776,8 +2782,13 @@ namespace OpenSim.Region.Framework.Scenes
2776 { 2782 {
2777 if (part.Scale.X > 10.0 || part.Scale.Y > 10.0 || part.Scale.Z > 10.0) 2783 if (part.Scale.X > 10.0 || part.Scale.Y > 10.0 || part.Scale.Z > 10.0)
2778 { 2784 {
2779 UsePhysics = false; // Reset physics 2785 if (part.Scale.X > m_scene.RegionInfo.PhysPrimMax ||
2780 break; 2786 part.Scale.Y > m_scene.RegionInfo.PhysPrimMax ||
2787 part.Scale.Z > m_scene.RegionInfo.PhysPrimMax)
2788 {
2789 UsePhysics = false; // Reset physics
2790 break;
2791 }
2781 } 2792 }
2782 } 2793 }
2783 2794