Swap the locking of m_EventQueue and m_Script to ease locks on script inventory operations

avinationmerge
CasperW 2009-11-23 20:25:53 +01:00
parent 73c2162ff6
commit 247c66b3fe
1 changed files with 138 additions and 134 deletions

View File

@ -640,11 +640,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
/// <returns></returns>
public object EventProcessor()
{
lock (m_Script)
{
EventParams data = null;
lock (m_EventQueue)
{
lock (m_Script)
{
data = (EventParams) m_EventQueue.Dequeue();
if (data == null) // Shouldn't happen
@ -670,6 +671,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
if (data.EventName == "collision")
m_CollisionInQueue = false;
}
}
lock(m_Script)
{
//m_log.DebugFormat("[XENGINE]: Processing event {0} for {1}", data.EventName, this);
@ -677,8 +681,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
if (data.EventName == "state") // Hardcoded state change
{
// m_log.DebugFormat("[Script] Script {0}.{1} state set to {2}",
// m_PrimName, m_ScriptName, data.Params[0].ToString());
// m_log.DebugFormat("[Script] Script {0}.{1} state set to {2}",
// m_PrimName, m_ScriptName, data.Params[0].ToString());
m_State=data.Params[0].ToString();
AsyncCommandManager.RemoveScript(m_Engine,
m_LocalID, m_ItemID);