diff options
author | Oren Hurvitz | 2011-09-05 12:45:02 +0300 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-09-09 23:01:05 +0100 |
commit | 1dd904b78e723af8cb4340415a8f41dcd1054541 (patch) | |
tree | da8d4addb498e4207bd7c4e17b836e8759673107 /OpenSim | |
parent | Added a check to the CreateRegion method of the RemoteAdmin module that the s... (diff) | |
download | opensim-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')
-rw-r--r-- | OpenSim/Region/Application/OpenSimBase.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Interfaces/IScriptModule.cs | 5 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 24 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 3 |
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 | ||