diff options
author | Tom Grimshaw | 2010-05-29 02:10:34 -0700 |
---|---|---|
committer | Tom Grimshaw | 2010-05-29 02:10:34 -0700 |
commit | e3dac1292ef000daadda3e264354d8df0fc77c22 (patch) | |
tree | 932b9872e470b7ac7f20ed185dbba4b7caa17fa4 /OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |
parent | Merge branch 'careminster-presence-refactor' of ssh://3dhosting.de/var/git/ca... (diff) | |
download | opensim-SC-e3dac1292ef000daadda3e264354d8df0fc77c22.zip opensim-SC-e3dac1292ef000daadda3e264354d8df0fc77c22.tar.gz opensim-SC-e3dac1292ef000daadda3e264354d8df0fc77c22.tar.bz2 opensim-SC-e3dac1292ef000daadda3e264354d8df0fc77c22.tar.xz |
Implement suspended updates - When an operation is occurring on lots of prims in a single group, don't schedule any updates until the operation has completed. This makes things like llSetAlpha(LINK_SET,0.0,ALL_SIDES); a *lot* faster, more efficient and less buggy, and also makes unlinking a lot better. Linking is still treacherous.. this needs to be analysed.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index cee2be3..9ebb168 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -109,9 +109,26 @@ namespace OpenSim.Region.Framework.Scenes | |||
109 | private long m_maxPersistTime = 0; | 109 | private long m_maxPersistTime = 0; |
110 | private long m_minPersistTime = 0; | 110 | private long m_minPersistTime = 0; |
111 | private Random m_rand; | 111 | private Random m_rand; |
112 | private bool m_suspendUpdates; | ||
112 | 113 | ||
113 | private System.Threading.ReaderWriterLockSlim m_partsLock = new System.Threading.ReaderWriterLockSlim(); | 114 | private System.Threading.ReaderWriterLockSlim m_partsLock = new System.Threading.ReaderWriterLockSlim(); |
114 | 115 | ||
116 | public bool areUpdatesSuspended | ||
117 | { | ||
118 | get | ||
119 | { | ||
120 | return m_suspendUpdates; | ||
121 | } | ||
122 | set | ||
123 | { | ||
124 | m_suspendUpdates = value; | ||
125 | if (!value) | ||
126 | { | ||
127 | QueueForUpdateCheck(); | ||
128 | } | ||
129 | } | ||
130 | } | ||
131 | |||
115 | public void lockPartsForRead(bool locked) | 132 | public void lockPartsForRead(bool locked) |
116 | { | 133 | { |
117 | if (locked) | 134 | if (locked) |