aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs28
1 files changed, 11 insertions, 17 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
index 6a9cd72..cc4be73 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
@@ -68,7 +68,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
68 private IScriptWorkItem m_CurrentWorkItem; 68 private IScriptWorkItem m_CurrentWorkItem;
69 69
70 private Queue m_EventQueue = new Queue(32); 70 private Queue m_EventQueue = new Queue(32);
71 private bool m_RunEvents = false;
72 private UUID m_ItemID; 71 private UUID m_ItemID;
73 private uint m_LocalID; 72 private uint m_LocalID;
74 private UUID m_ObjectID; 73 private UUID m_ObjectID;
@@ -141,11 +140,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
141 } 140 }
142 } 141 }
143 142
144 public bool Running 143 public bool Running { get; set; }
145 {
146 get { return m_RunEvents; }
147 set { m_RunEvents = value; }
148 }
149 144
150 public bool Suspended 145 public bool Suspended
151 { 146 {
@@ -164,7 +159,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
164 lock (m_EventQueue) 159 lock (m_EventQueue)
165 { 160 {
166 // Need to place ourselves back in a work item if there are events to process 161 // Need to place ourselves back in a work item if there are events to process
167 if ((m_EventQueue.Count > 0) && m_RunEvents && (!m_ShuttingDown)) 162 if ((m_EventQueue.Count > 0) && Running && (!m_ShuttingDown))
168 m_CurrentWorkItem = m_Engine.QueueEventHandler(this); 163 m_CurrentWorkItem = m_Engine.QueueEventHandler(this);
169 } 164 }
170 } 165 }
@@ -369,13 +364,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
369 part.SetScriptEvents(m_ItemID, 364 part.SetScriptEvents(m_ItemID,
370 (int)m_Script.GetStateEventFlags(State)); 365 (int)m_Script.GetStateEventFlags(State));
371 366
372 if (m_RunEvents && (!m_ShuttingDown)) 367 if (Running && (!m_ShuttingDown))
373 { 368 {
374 m_RunEvents = false; 369 Running = false;
375 } 370 }
376 else 371 else
377 { 372 {
378 m_RunEvents = false; 373 Running = false;
379 m_startOnInit = false; 374 m_startOnInit = false;
380 } 375 }
381 376
@@ -531,7 +526,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
531 if (Running) 526 if (Running)
532 return; 527 return;
533 528
534 m_RunEvents = true; 529 Running = true;
535 530
536 if (m_EventQueue.Count > 0) 531 if (m_EventQueue.Count > 0)
537 { 532 {
@@ -559,7 +554,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
559 // If we're not running or waiting to run an event then we can safely stop. 554 // If we're not running or waiting to run an event then we can safely stop.
560 if (m_CurrentWorkItem == null) 555 if (m_CurrentWorkItem == null)
561 { 556 {
562 m_RunEvents = false; 557 Running = false;
563 return true; 558 return true;
564 } 559 }
565 560
@@ -567,12 +562,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
567 if (m_CurrentWorkItem.Cancel()) 562 if (m_CurrentWorkItem.Cancel())
568 { 563 {
569 m_CurrentWorkItem = null; 564 m_CurrentWorkItem = null;
570 m_RunEvents = false; 565 Running = false;
571 return true; 566 return true;
572 } 567 }
573 568
574 workItem = m_CurrentWorkItem; 569 workItem = m_CurrentWorkItem;
575 m_RunEvents = false; 570 Running = false;
576 } 571 }
577 572
578 // Wait for the current event to complete. 573 // Wait for the current event to complete.
@@ -727,7 +722,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
727 data = (EventParams) m_EventQueue.Dequeue(); 722 data = (EventParams) m_EventQueue.Dequeue();
728 if (data == null) // Shouldn't happen 723 if (data == null) // Shouldn't happen
729 { 724 {
730 if ((m_EventQueue.Count > 0) && m_RunEvents && (!m_ShuttingDown)) 725 if (m_EventQueue.Count > 0 && Running && !m_ShuttingDown)
731 { 726 {
732 m_CurrentWorkItem = m_Engine.QueueEventHandler(this); 727 m_CurrentWorkItem = m_Engine.QueueEventHandler(this);
733 } 728 }
@@ -853,12 +848,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
853 } 848 }
854 } 849 }
855 850
856
857 // If there are more events and we are currently running and not shutting down, then ask the 851 // If there are more events and we are currently running and not shutting down, then ask the
858 // script engine to run the next event. 852 // script engine to run the next event.
859 lock (m_EventQueue) 853 lock (m_EventQueue)
860 { 854 {
861 if ((m_EventQueue.Count > 0) && m_RunEvents && (!m_ShuttingDown)) 855 if (m_EventQueue.Count > 0 && Running && (!m_ShuttingDown))
862 { 856 {
863 m_CurrentWorkItem = m_Engine.QueueEventHandler(this); 857 m_CurrentWorkItem = m_Engine.QueueEventHandler(this);
864 } 858 }