aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs8
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs10
2 files changed, 16 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 267928b..e694f15 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -3588,6 +3588,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3588 { 3588 {
3589 parentPrim.DelinkFromGroup(part.LocalId, true); 3589 parentPrim.DelinkFromGroup(part.LocalId, true);
3590 } 3590 }
3591 parentPrim.HasGroupChanged = true;
3592 parentPrim.ScheduleGroupForFullUpdate();
3591 parentPrim.TriggerScriptChangedEvent(Changed.LINK); 3593 parentPrim.TriggerScriptChangedEvent(Changed.LINK);
3592 3594
3593 if (parts.Count > 0) 3595 if (parts.Count > 0)
@@ -3599,6 +3601,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3599 part.UpdateFlag = 0; 3601 part.UpdateFlag = 0;
3600 newRoot.ParentGroup.LinkToGroup(part.ParentGroup); 3602 newRoot.ParentGroup.LinkToGroup(part.ParentGroup);
3601 } 3603 }
3604 newRoot.ParentGroup.HasGroupChanged = true;
3605 newRoot.ParentGroup.ScheduleGroupForFullUpdate();
3602 } 3606 }
3603 } 3607 }
3604 else 3608 else
@@ -3607,6 +3611,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3607 return; 3611 return;
3608 3612
3609 parentPrim.DelinkFromGroup(childPrim.LocalId, true); 3613 parentPrim.DelinkFromGroup(childPrim.LocalId, true);
3614 parentPrim.HasGroupChanged = true;
3615 parentPrim.ScheduleGroupForFullUpdate();
3610 parentPrim.TriggerScriptChangedEvent(Changed.LINK); 3616 parentPrim.TriggerScriptChangedEvent(Changed.LINK);
3611 } 3617 }
3612 } 3618 }
@@ -3626,6 +3632,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3626 parentPrim.DelinkFromGroup(part.LocalId, true); 3632 parentPrim.DelinkFromGroup(part.LocalId, true);
3627 parentPrim.TriggerScriptChangedEvent(Changed.LINK); 3633 parentPrim.TriggerScriptChangedEvent(Changed.LINK);
3628 } 3634 }
3635 parentPrim.HasGroupChanged = true;
3636 parentPrim.ScheduleGroupForFullUpdate();
3629 } 3637 }
3630 3638
3631 public LSL_String llGetLinkKey(int linknum) 3639 public LSL_String llGetLinkKey(int linknum)
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 49c69ab..184af19 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -150,7 +150,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine
150 } 150 }
151 else 151 else
152 { 152 {
153 m_scriptsLock.ExitReadLock(); 153 if (m_scriptsLock.RecursiveReadCount > 0)
154 {
155 m_scriptsLock.ExitReadLock();
156 }
154 } 157 }
155 } 158 }
156 private void lockScriptsForWrite(bool locked) 159 private void lockScriptsForWrite(bool locked)
@@ -179,7 +182,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine
179 } 182 }
180 else 183 else
181 { 184 {
182 m_scriptsLock.ExitWriteLock(); 185 if (m_scriptsLock.RecursiveWriteCount > 0)
186 {
187 m_scriptsLock.ExitWriteLock();
188 }
183 } 189 }
184 } 190 }
185 191