aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneGraph.cs
diff options
context:
space:
mode:
authorMelanie2009-10-07 01:45:49 +0100
committerMelanie2009-10-07 01:45:49 +0100
commit89d23a1fa23cb191e7ebde047311adcadf3b2e45 (patch)
tree461ef0fdd6640a17db5b3d989f0e02b1cf40252e /OpenSim/Region/Framework/Scenes/SceneGraph.cs
parentRewrote parts of the code that were double-locking different objects. This is... (diff)
downloadopensim-SC_OLD-89d23a1fa23cb191e7ebde047311adcadf3b2e45.zip
opensim-SC_OLD-89d23a1fa23cb191e7ebde047311adcadf3b2e45.tar.gz
opensim-SC_OLD-89d23a1fa23cb191e7ebde047311adcadf3b2e45.tar.bz2
opensim-SC_OLD-89d23a1fa23cb191e7ebde047311adcadf3b2e45.tar.xz
Revert "Rewrote parts of the code that were double-locking different objects. This is about half of the code base reviewed."
This reverts commit e992ca025571a891333a57012c2cd4419b6581e5.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneGraph.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs36
1 files changed, 13 insertions, 23 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 20b3b5c..54ac792 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -297,44 +297,34 @@ namespace OpenSim.Region.Framework.Scenes
297 297
298 sceneObject.AttachToScene(m_parentScene); 298 sceneObject.AttachToScene(m_parentScene);
299 299
300 List<SceneObjectPart> parts = null;
301 bool found = false;
302 lock (sceneObject) 300 lock (sceneObject)
303 { 301 {
304 if (!Entities.ContainsKey(sceneObject.UUID)) 302 if (!Entities.ContainsKey(sceneObject.UUID))
305 { 303 {
306 found = true;
307 Entities.Add(sceneObject); 304 Entities.Add(sceneObject);
308 m_numPrim += sceneObject.Children.Count; 305 m_numPrim += sceneObject.Children.Count;
309 306
310 if (attachToBackup) 307 if (attachToBackup)
311 sceneObject.AttachToBackup(); 308 sceneObject.AttachToBackup();
312 309
313 parts = new List<SceneObjectPart>(sceneObject.Children.Values); 310 if (OnObjectCreate != null)
314 311 OnObjectCreate(sceneObject);
315 } 312
316 } 313 lock (m_dictionary_lock)
317
318 if (found)
319 {
320 lock (m_dictionary_lock)
321 {
322 SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject;
323 SceneObjectGroupsByLocalID[sceneObject.LocalId] = sceneObject;
324 foreach (SceneObjectPart part in parts)
325 { 314 {
326 SceneObjectGroupsByFullID[part.UUID] = sceneObject; 315 SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject;
327 SceneObjectGroupsByLocalID[part.LocalId] = sceneObject; 316 SceneObjectGroupsByLocalID[sceneObject.LocalId] = sceneObject;
317 foreach (SceneObjectPart part in sceneObject.Children.Values)
318 {
319 SceneObjectGroupsByFullID[part.UUID] = sceneObject;
320 SceneObjectGroupsByLocalID[part.LocalId] = sceneObject;
321 }
328 } 322 }
329 }
330 323
331 if (OnObjectCreate != null) 324 return true;
332 OnObjectCreate(sceneObject); 325 }
333
334 return true;
335 } 326 }
336 327
337
338 return false; 328 return false;
339 } 329 }
340 330