aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs17
1 files changed, 14 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index c3c6342..1de0092 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -235,7 +235,11 @@ namespace OpenSim.Region.Framework.Scenes
235 /// <summary> 235 /// <summary>
236 /// Stop all the scripts in this prim. 236 /// Stop all the scripts in this prim.
237 /// </summary> 237 /// </summary>
238 public void RemoveScriptInstances() 238 /// <param name="sceneObjectBeingDeleted">
239 /// Should be true if these scripts are being removed because the scene
240 /// object is being deleted. This will prevent spurious updates to the client.
241 /// </param>
242 public void RemoveScriptInstances(bool sceneObjectBeingDeleted)
239 { 243 {
240 Items.LockItemsForRead(true); 244 Items.LockItemsForRead(true);
241 IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values); 245 IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values);
@@ -412,10 +416,17 @@ namespace OpenSim.Region.Framework.Scenes
412 /// Stop a script which is in this prim's inventory. 416 /// Stop a script which is in this prim's inventory.
413 /// </summary> 417 /// </summary>
414 /// <param name="itemId"></param> 418 /// <param name="itemId"></param>
415 public void RemoveScriptInstance(UUID itemId) 419 /// <param name="sceneObjectBeingDeleted">
420 /// Should be true if this script is being removed because the scene
421 /// object is being deleted. This will prevent spurious updates to the client.
422 /// </param>
423 public void RemoveScriptInstance(UUID itemId, bool sceneObjectBeingDeleted)
416 { 424 {
417 if (m_items.ContainsKey(itemId)) 425 if (m_items.ContainsKey(itemId))
418 { 426 {
427 if (!sceneObjectBeingDeleted)
428 m_part.RemoveScriptEvents(itemId);
429
419 m_part.ParentGroup.Scene.EventManager.TriggerRemoveScript(m_part.LocalId, itemId); 430 m_part.ParentGroup.Scene.EventManager.TriggerRemoveScript(m_part.LocalId, itemId);
420 m_part.ParentGroup.AddActiveScriptCount(-1); 431 m_part.ParentGroup.AddActiveScriptCount(-1);
421 } 432 }
@@ -496,7 +507,7 @@ namespace OpenSim.Region.Framework.Scenes
496 if (i.Name == item.Name) 507 if (i.Name == item.Name)
497 { 508 {
498 if (i.InvType == (int)InventoryType.LSL) 509 if (i.InvType == (int)InventoryType.LSL)
499 RemoveScriptInstance(i.ItemID); 510 RemoveScriptInstance(i.ItemID, false);
500 511
501 RemoveInventoryItem(i.ItemID); 512 RemoveInventoryItem(i.ItemID);
502 break; 513 break;