aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorOren Hurvitz2011-09-05 12:45:02 +0300
committerJustin Clark-Casey (justincc)2011-09-09 23:01:05 +0100
commit1dd904b78e723af8cb4340415a8f41dcd1054541 (patch)
treeda8d4addb498e4207bd7c4e17b836e8759673107 /OpenSim/Region
parentAdded a check to the CreateRegion method of the RemoteAdmin module that the s... (diff)
downloadopensim-SC_OLD-1dd904b78e723af8cb4340415a8f41dcd1054541.zip
opensim-SC_OLD-1dd904b78e723af8cb4340415a8f41dcd1054541.tar.gz
opensim-SC_OLD-1dd904b78e723af8cb4340415a8f41dcd1054541.tar.bz2
opensim-SC_OLD-1dd904b78e723af8cb4340415a8f41dcd1054541.tar.xz
Delay loading scripts until the scene has finished loading
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs2
-rw-r--r--OpenSim/Region/Framework/Interfaces/IScriptModule.cs5
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs24
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs3
4 files changed, 32 insertions, 2 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index 00b080c..92e8ed1 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -411,6 +411,8 @@ namespace OpenSim
411 411
412 scene.StartTimer(); 412 scene.StartTimer();
413 413
414 scene.StartScripts();
415
414 return clientServer; 416 return clientServer;
415 } 417 }
416 418
diff --git a/OpenSim/Region/Framework/Interfaces/IScriptModule.cs b/OpenSim/Region/Framework/Interfaces/IScriptModule.cs
index d9752e6..b27b7da 100644
--- a/OpenSim/Region/Framework/Interfaces/IScriptModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IScriptModule.cs
@@ -52,5 +52,10 @@ namespace OpenSim.Region.Framework.Interfaces
52 ArrayList GetScriptErrors(UUID itemID); 52 ArrayList GetScriptErrors(UUID itemID);
53 53
54 void SaveAllState(); 54 void SaveAllState();
55
56 /// <summary>
57 /// Starts the processing threads.
58 /// </summary>
59 void StartProcessing();
55 } 60 }
56} 61}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 4700c3b..9dcd10a 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -57,11 +57,11 @@ namespace OpenSim.Region.Framework.Scenes
57 protected AsyncInventorySender m_asyncInventorySender; 57 protected AsyncInventorySender m_asyncInventorySender;
58 58
59 /// <summary> 59 /// <summary>
60 /// Start all the scripts in the scene which should be started. 60 /// Creates all the scripts in the scene which should be started.
61 /// </summary> 61 /// </summary>
62 public void CreateScriptInstances() 62 public void CreateScriptInstances()
63 { 63 {
64 m_log.Info("[PRIM INVENTORY]: Starting scripts in scene"); 64 m_log.Info("[PRIM INVENTORY]: Creating scripts in scene");
65 65
66 EntityBase[] entities = Entities.GetEntities(); 66 EntityBase[] entities = Entities.GetEntities();
67 foreach (EntityBase group in entities) 67 foreach (EntityBase group in entities)
@@ -74,6 +74,26 @@ namespace OpenSim.Region.Framework.Scenes
74 } 74 }
75 } 75 }
76 76
77 /// <summary>
78 /// Lets the script engines start processing scripts.
79 /// </summary>
80 public void StartScripts()
81 {
82 m_log.Info("[PRIM INVENTORY]: Starting scripts in scene");
83
84 IScriptModule[] engines = RequestModuleInterfaces<IScriptModule>();
85 if (engines != null)
86 {
87 foreach (IScriptModule engine in engines)
88 {
89 if (engine != null)
90 {
91 engine.StartProcessing();
92 }
93 }
94 }
95 }
96
77 public void AddUploadedInventoryItem(UUID agentID, InventoryItemBase item) 97 public void AddUploadedInventoryItem(UUID agentID, InventoryItemBase item)
78 { 98 {
79 IMoneyModule money = RequestModuleInterface<IMoneyModule>(); 99 IMoneyModule money = RequestModuleInterface<IMoneyModule>();
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index c443669..55f373e 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -339,7 +339,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine
339 m_ThreadPool.QueueWorkItem(new WorkItemCallback(this.DoBackup), 339 m_ThreadPool.QueueWorkItem(new WorkItemCallback(this.DoBackup),
340 new Object[] { m_SaveTime }); 340 new Object[] { m_SaveTime });
341 } 341 }
342 }
342 343
344 public void StartProcessing()
345 {
343 m_ThreadPool.Start(); 346 m_ThreadPool.Start();
344 } 347 }
345 348