aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Interfaces
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-07-10 22:41:11 +0100
committerJustin Clark-Casey (justincc)2012-07-10 22:41:11 +0100
commitf3134b5cf688af9b824880e0221072b24d22f33e (patch)
tree94ac27ba4fd2f7f0700cc626005d20d7c6465881 /OpenSim/Region/Framework/Interfaces
parentIf a script is being stopped manually, then give the scriptpool thread 1 seco... (diff)
downloadopensim-SC_OLD-f3134b5cf688af9b824880e0221072b24d22f33e.zip
opensim-SC_OLD-f3134b5cf688af9b824880e0221072b24d22f33e.tar.gz
opensim-SC_OLD-f3134b5cf688af9b824880e0221072b24d22f33e.tar.bz2
opensim-SC_OLD-f3134b5cf688af9b824880e0221072b24d22f33e.tar.xz
When an attachment is detached to inv or derezzed, stop the scripts, update the known item with script state still in the script engine and then remove the scripts.
This is to fix a regression starting from 5301648 where attachments had to start being deleted before persistence in order to avoid race conditions with hud update threads.
Diffstat (limited to 'OpenSim/Region/Framework/Interfaces')
-rw-r--r--OpenSim/Region/Framework/Interfaces/IEntityInventory.cs15
1 files changed, 13 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
index 1c9bdce..8d62847 100644
--- a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
@@ -92,7 +92,7 @@ namespace OpenSim.Region.Framework.Interfaces
92 void ResumeScripts(); 92 void ResumeScripts();
93 93
94 /// <summary> 94 /// <summary>
95 /// Stop all the scripts in this entity. 95 /// Stop and remove all the scripts in this entity from the scene.
96 /// </summary> 96 /// </summary>
97 /// <param name="sceneObjectBeingDeleted"> 97 /// <param name="sceneObjectBeingDeleted">
98 /// Should be true if these scripts are being removed because the scene 98 /// Should be true if these scripts are being removed because the scene
@@ -101,6 +101,11 @@ namespace OpenSim.Region.Framework.Interfaces
101 void RemoveScriptInstances(bool sceneObjectBeingDeleted); 101 void RemoveScriptInstances(bool sceneObjectBeingDeleted);
102 102
103 /// <summary> 103 /// <summary>
104 /// Stop all the scripts in this entity.
105 /// </summary>
106 void StopScriptInstances();
107
108 /// <summary>
104 /// Start a script which is in this entity's inventory. 109 /// Start a script which is in this entity's inventory.
105 /// </summary> 110 /// </summary>
106 /// <param name="item"></param> 111 /// <param name="item"></param>
@@ -129,7 +134,7 @@ namespace OpenSim.Region.Framework.Interfaces
129 bool CreateScriptInstance(UUID itemId, int startParam, bool postOnRez, string engine, int stateSource); 134 bool CreateScriptInstance(UUID itemId, int startParam, bool postOnRez, string engine, int stateSource);
130 135
131 /// <summary> 136 /// <summary>
132 /// Stop a script which is in this prim's inventory. 137 /// Stop and remove a script which is in this prim's inventory from the scene.
133 /// </summary> 138 /// </summary>
134 /// <param name="itemId"></param> 139 /// <param name="itemId"></param>
135 /// <param name="sceneObjectBeingDeleted"> 140 /// <param name="sceneObjectBeingDeleted">
@@ -139,6 +144,12 @@ namespace OpenSim.Region.Framework.Interfaces
139 void RemoveScriptInstance(UUID itemId, bool sceneObjectBeingDeleted); 144 void RemoveScriptInstance(UUID itemId, bool sceneObjectBeingDeleted);
140 145
141 /// <summary> 146 /// <summary>
147 /// Stop a script which is in this prim's inventory.
148 /// </summary>
149 /// <param name="itemId"></param>
150 void StopScriptInstance(UUID itemId);
151
152 /// <summary>
142 /// Add an item to this entity's inventory. If an item with the same name already exists, then an alternative 153 /// Add an item to this entity's inventory. If an item with the same name already exists, then an alternative
143 /// name is chosen. 154 /// name is chosen.
144 /// </summary> 155 /// </summary>