aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
authorTom Grimshaw2010-05-29 02:10:34 -0700
committerTom Grimshaw2010-05-29 02:10:34 -0700
commite3dac1292ef000daadda3e264354d8df0fc77c22 (patch)
tree932b9872e470b7ac7f20ed185dbba4b7caa17fa4 /OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
parentMerge branch 'careminster-presence-refactor' of ssh://3dhosting.de/var/git/ca... (diff)
downloadopensim-SC_OLD-e3dac1292ef000daadda3e264354d8df0fc77c22.zip
opensim-SC_OLD-e3dac1292ef000daadda3e264354d8df0fc77c22.tar.gz
opensim-SC_OLD-e3dac1292ef000daadda3e264354d8df0fc77c22.tar.bz2
opensim-SC_OLD-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 '')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs17
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)