Swap the locking of m_EventQueue and m_Script to ease locks on script inventory operations
parent
73c2162ff6
commit
247c66b3fe
|
@ -640,11 +640,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public object EventProcessor()
|
public object EventProcessor()
|
||||||
{
|
{
|
||||||
lock (m_Script)
|
|
||||||
{
|
|
||||||
EventParams data = null;
|
EventParams data = null;
|
||||||
|
|
||||||
lock (m_EventQueue)
|
lock (m_EventQueue)
|
||||||
|
{
|
||||||
|
lock (m_Script)
|
||||||
{
|
{
|
||||||
data = (EventParams) m_EventQueue.Dequeue();
|
data = (EventParams) m_EventQueue.Dequeue();
|
||||||
if (data == null) // Shouldn't happen
|
if (data == null) // Shouldn't happen
|
||||||
|
@ -670,6 +671,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
if (data.EventName == "collision")
|
if (data.EventName == "collision")
|
||||||
m_CollisionInQueue = false;
|
m_CollisionInQueue = false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
lock(m_Script)
|
||||||
|
{
|
||||||
|
|
||||||
//m_log.DebugFormat("[XENGINE]: Processing event {0} for {1}", data.EventName, this);
|
//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
|
if (data.EventName == "state") // Hardcoded state change
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[Script] Script {0}.{1} state set to {2}",
|
// m_log.DebugFormat("[Script] Script {0}.{1} state set to {2}",
|
||||||
// m_PrimName, m_ScriptName, data.Params[0].ToString());
|
// m_PrimName, m_ScriptName, data.Params[0].ToString());
|
||||||
m_State=data.Params[0].ToString();
|
m_State=data.Params[0].ToString();
|
||||||
AsyncCommandManager.RemoveScript(m_Engine,
|
AsyncCommandManager.RemoveScript(m_Engine,
|
||||||
m_LocalID, m_ItemID);
|
m_LocalID, m_ItemID);
|
||||||
|
|
Loading…
Reference in New Issue