diff options
author | John Hurliman | 2009-10-23 13:14:29 -0700 |
---|---|---|
committer | John Hurliman | 2009-10-23 13:14:29 -0700 |
commit | a41cd1d0695c01e4096fa0b7696b415a4c7455fc (patch) | |
tree | a942c2f79906a7de36e3fe363fba2f8130e9f8c3 | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC-a41cd1d0695c01e4096fa0b7696b415a4c7455fc.zip opensim-SC-a41cd1d0695c01e4096fa0b7696b415a4c7455fc.tar.gz opensim-SC-a41cd1d0695c01e4096fa0b7696b415a4c7455fc.tar.bz2 opensim-SC-a41cd1d0695c01e4096fa0b7696b415a4c7455fc.tar.xz |
* Unregister Mono.Addins event handlers in PluginLoader.Dispose() and always handle PluginLoader with the using pattern. This freed up 121,634,796 bytes on my system
* Avoid allocating an Action<IClientAPI> object every round of the OutgoingPacketHandler
* Removed unnecessary semi-colon endings from OpenSim.ini.example [InterestManagement] section
-rw-r--r-- | OpenSim/Data/DataPluginFactory.cs | 15 | ||||
-rw-r--r-- | OpenSim/Framework/PluginLoader.cs | 9 | ||||
-rw-r--r-- | OpenSim/Grid/GridServer/GridServerBase.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Application/OpenSimBase.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 6 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 13 | ||||
-rw-r--r-- | bin/OpenSim.ini.example | 10 |
7 files changed, 44 insertions, 29 deletions
diff --git a/OpenSim/Data/DataPluginFactory.cs b/OpenSim/Data/DataPluginFactory.cs index 718c6b2..841f71e 100644 --- a/OpenSim/Data/DataPluginFactory.cs +++ b/OpenSim/Data/DataPluginFactory.cs | |||
@@ -119,14 +119,15 @@ namespace OpenSim.Data | |||
119 | 119 | ||
120 | PluginLoaderParamFactory<T>(connect, out pluginInitialiser, out extensionPointPath); | 120 | PluginLoaderParamFactory<T>(connect, out pluginInitialiser, out extensionPointPath); |
121 | 121 | ||
122 | PluginLoader<T> loader = new PluginLoader<T>(pluginInitialiser); | 122 | using (PluginLoader<T> loader = new PluginLoader<T>(pluginInitialiser)) |
123 | 123 | { | |
124 | // loader will try to load all providers (MySQL, MSSQL, etc) | 124 | // loader will try to load all providers (MySQL, MSSQL, etc) |
125 | // unless it is constrainted to the correct "Provider" entry in the addin.xml | 125 | // unless it is constrainted to the correct "Provider" entry in the addin.xml |
126 | loader.Add(extensionPointPath, new PluginProviderFilter(provider)); | 126 | loader.Add(extensionPointPath, new PluginProviderFilter(provider)); |
127 | loader.Load(); | 127 | loader.Load(); |
128 | 128 | ||
129 | return loader.Plugins; | 129 | return loader.Plugins; |
130 | } | ||
130 | } | 131 | } |
131 | 132 | ||
132 | /// <summary> | 133 | /// <summary> |
diff --git a/OpenSim/Framework/PluginLoader.cs b/OpenSim/Framework/PluginLoader.cs index 5d38f5f..819cb7b 100644 --- a/OpenSim/Framework/PluginLoader.cs +++ b/OpenSim/Framework/PluginLoader.cs | |||
@@ -194,10 +194,15 @@ namespace OpenSim.Framework | |||
194 | } | 194 | } |
195 | } | 195 | } |
196 | 196 | ||
197 | /// <summary> | ||
198 | /// Unregisters Mono.Addins event handlers, allowing temporary Mono.Addins | ||
199 | /// data to be garbage collected. Since the plugins created by this loader | ||
200 | /// are meant to outlive the loader itself, they must be disposed separately | ||
201 | /// </summary> | ||
197 | public void Dispose() | 202 | public void Dispose() |
198 | { | 203 | { |
199 | foreach (T plugin in Plugins) | 204 | AddinManager.AddinLoadError -= on_addinloaderror_; |
200 | plugin.Dispose(); | 205 | AddinManager.AddinLoaded -= on_addinloaded_; |
201 | } | 206 | } |
202 | 207 | ||
203 | private void initialise_plugin_dir_(string dir) | 208 | private void initialise_plugin_dir_(string dir) |
diff --git a/OpenSim/Grid/GridServer/GridServerBase.cs b/OpenSim/Grid/GridServer/GridServerBase.cs index d63ac2e..113d5c8 100644 --- a/OpenSim/Grid/GridServer/GridServerBase.cs +++ b/OpenSim/Grid/GridServer/GridServerBase.cs | |||
@@ -115,11 +115,11 @@ namespace OpenSim.Grid.GridServer | |||
115 | 115 | ||
116 | protected virtual void LoadPlugins() | 116 | protected virtual void LoadPlugins() |
117 | { | 117 | { |
118 | PluginLoader<IGridPlugin> loader = | 118 | using (PluginLoader<IGridPlugin> loader = new PluginLoader<IGridPlugin>(new GridPluginInitialiser(this))) |
119 | new PluginLoader<IGridPlugin>(new GridPluginInitialiser(this)); | 119 | { |
120 | 120 | loader.Load("/OpenSim/GridServer"); | |
121 | loader.Load("/OpenSim/GridServer"); | 121 | m_plugins = loader.Plugins; |
122 | m_plugins = loader.Plugins; | 122 | } |
123 | } | 123 | } |
124 | 124 | ||
125 | public override void ShutdownSpecific() | 125 | public override void ShutdownSpecific() |
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 3df3a1c..cc18f1a 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -162,11 +162,11 @@ namespace OpenSim | |||
162 | 162 | ||
163 | protected virtual void LoadPlugins() | 163 | protected virtual void LoadPlugins() |
164 | { | 164 | { |
165 | PluginLoader<IApplicationPlugin> loader = | 165 | using (PluginLoader<IApplicationPlugin> loader = new PluginLoader<IApplicationPlugin>(new ApplicationPluginInitialiser(this))) |
166 | new PluginLoader<IApplicationPlugin>(new ApplicationPluginInitialiser(this)); | 166 | { |
167 | 167 | loader.Load("/OpenSim/Startup"); | |
168 | loader.Load("/OpenSim/Startup"); | 168 | m_plugins = loader.Plugins; |
169 | m_plugins = loader.Plugins; | 169 | } |
170 | } | 170 | } |
171 | 171 | ||
172 | protected override List<string> GetHelpTopics() | 172 | protected override List<string> GetHelpTopics() |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 232c9c9..1dd58bf 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | |||
@@ -814,6 +814,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
814 | // on to en-US to avoid number parsing issues | 814 | // on to en-US to avoid number parsing issues |
815 | Culture.SetCurrentCulture(); | 815 | Culture.SetCurrentCulture(); |
816 | 816 | ||
817 | // Typecast the function to an Action<IClientAPI> once here to avoid allocating a new | ||
818 | // Action generic every round | ||
819 | Action<IClientAPI> clientPacketHandler = ClientOutgoingPacketHandler; | ||
820 | |||
817 | while (base.IsRunning) | 821 | while (base.IsRunning) |
818 | { | 822 | { |
819 | try | 823 | try |
@@ -862,7 +866,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
862 | 866 | ||
863 | // Handle outgoing packets, resends, acknowledgements, and pings for each | 867 | // Handle outgoing packets, resends, acknowledgements, and pings for each |
864 | // client. m_packetSent will be set to true if a packet is sent | 868 | // client. m_packetSent will be set to true if a packet is sent |
865 | m_scene.ClientManager.ForEachSync(ClientOutgoingPacketHandler); | 869 | m_scene.ClientManager.ForEachSync(clientPacketHandler); |
866 | 870 | ||
867 | // If nothing was sent, sleep for the minimum amount of time before a | 871 | // If nothing was sent, sleep for the minimum amount of time before a |
868 | // token bucket could get more tokens | 872 | // token bucket could get more tokens |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index ee848bb..a3bc04b 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1223,10 +1223,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1223 | if (!m_backingup) | 1223 | if (!m_backingup) |
1224 | { | 1224 | { |
1225 | m_backingup = true; | 1225 | m_backingup = true; |
1226 | 1226 | Util.FireAndForget(BackupWaitCallback); | |
1227 | System.ComponentModel.BackgroundWorker backupWorker = new System.ComponentModel.BackgroundWorker(); | ||
1228 | backupWorker.DoWork += delegate(object sender, System.ComponentModel.DoWorkEventArgs e) { Backup(); }; | ||
1229 | backupWorker.RunWorkerAsync(); | ||
1230 | } | 1227 | } |
1231 | } | 1228 | } |
1232 | 1229 | ||
@@ -1239,6 +1236,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
1239 | } | 1236 | } |
1240 | 1237 | ||
1241 | /// <summary> | 1238 | /// <summary> |
1239 | /// Wrapper for Backup() that can be called with Util.FireAndForget() | ||
1240 | /// </summary> | ||
1241 | private void BackupWaitCallback(object o) | ||
1242 | { | ||
1243 | Backup(); | ||
1244 | } | ||
1245 | |||
1246 | /// <summary> | ||
1242 | /// Backup the scene. This acts as the main method of the backup thread. | 1247 | /// Backup the scene. This acts as the main method of the backup thread. |
1243 | /// </summary> | 1248 | /// </summary> |
1244 | /// <returns></returns> | 1249 | /// <returns></returns> |
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index f426556..9ee9829 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example | |||
@@ -1396,11 +1396,11 @@ | |||
1396 | [InterestManagement] | 1396 | [InterestManagement] |
1397 | ; This section controls how state updates are prioritized for each client | 1397 | ; This section controls how state updates are prioritized for each client |
1398 | ; Valid values are Time, Distance, SimpleAngularDistance, and FrontBack | 1398 | ; Valid values are Time, Distance, SimpleAngularDistance, and FrontBack |
1399 | UpdatePrioritizationScheme = FrontBack; | 1399 | UpdatePrioritizationScheme = FrontBack |
1400 | ReprioritizationEnabled = true; | 1400 | ReprioritizationEnabled = true |
1401 | ReprioritizationInterval = 2000.0; | 1401 | ReprioritizationInterval = 2000.0 |
1402 | RootReprioritizationDistance = 10.0; | 1402 | RootReprioritizationDistance = 10.0 |
1403 | ChildReprioritizationDistance = 20.0; | 1403 | ChildReprioritizationDistance = 20.0 |
1404 | 1404 | ||
1405 | ;; | 1405 | ;; |
1406 | ;; These are defaults that are overwritten below in [Architecture]. | 1406 | ;; These are defaults that are overwritten below in [Architecture]. |