diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | 17 |
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; |