more on scripts *target* events

This commit is contained in:
UbitUmarov
2020-02-26 19:18:07 +00:00
parent 94f88e330b
commit ad5aff2d17
5 changed files with 37 additions and 21 deletions

View File

@@ -594,7 +594,8 @@ namespace OpenSim.Region.ScriptEngine.Yengine
AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID);
m_XMRLSLApi.acm.TimerPlugin.CreateFromData(m_LocalID, m_ItemID, UUID.Zero, timers);
// Tell whoever cares which event handlers the new state has.
// Tell whoever cares which event handlers the new state has.
m_Part.RemoveScriptTargets(m_ItemID);
m_Part.SetScriptEvents(m_ItemID, GetStateEventFlags(stateCode));
// keep link messages

View File

@@ -66,8 +66,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
// up. This makes sure we decrement m_CompiledScriptRefCount.
~XMRInstance()
{
if(!m_disposed)
Dispose();
Dispose(false);
}
/**
@@ -76,11 +75,20 @@ namespace OpenSim.Region.ScriptEngine.Yengine
*/
public void Dispose()
{
// Tell script stop executing next time it calls CheckRun().
Dispose(true);
//GC.SuppressFinalize(this);
}
public void Dispose(bool fromdispose)
{
if (m_disposed)
return;
// Tell script stop executing next time it calls CheckRun().
suspendOnCheckRunHold = true;
// Don't send us any more events.
lock(m_RunLock)
// Don't send us any more events.
lock (m_RunLock)
{
if(m_Part != null)
{

View File

@@ -904,6 +904,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
// 'state_entry()' event handler.
m_RunOnePhase = "ResetLocked: posting default:state_entry() event";
stateCode = 0;
m_Part.RemoveScriptTargets(m_ItemID);
m_Part.SetScriptEvents(m_ItemID, GetStateEventFlags(0));
PostEvent(new EventParams("state_entry",
zeroObjectArray,