From 9d93c4808e0a0171bcb43fc551f3fb37b684c499 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 30 Jan 2012 19:21:58 +0000 Subject: [PATCH 1/2] lock SceneObjectGroupsByFullID in SceneGraph.ForEachSOG() to stop failure if SceneObjectGroupsByFullID is updated elsewhere at the same time. --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 7f18140206..36a454eb75 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -1137,8 +1137,10 @@ namespace OpenSim.Region.Framework.Scenes /// protected internal void ForEachSOG(Action action) { - // FIXME: Need to lock here, really. - List objlist = new List(SceneObjectGroupsByFullID.Values); + List objlist; + lock (SceneObjectGroupsByFullID) + objlist = new List(SceneObjectGroupsByFullID.Values); + foreach (SceneObjectGroup obj in objlist) { try @@ -1147,7 +1149,7 @@ namespace OpenSim.Region.Framework.Scenes } catch (Exception e) { - // Catch it and move on. This includes situations where splist has inconsistent info + // Catch it and move on. This includes situations where objlist has inconsistent info m_log.WarnFormat( "[SCENEGRAPH]: Problem processing action in ForEachSOG: {0} {1}", e.Message, e.StackTrace); } @@ -1382,10 +1384,10 @@ namespace OpenSim.Region.Framework.Scenes /// /// Update the texture entry of the given prim. /// - /// + /// /// A texture entry is an object that contains details of all the textures of the prim's face. In this case, /// the texture is given in its byte serialized form. - /// + /// /// /// /// From 2b84b6d8b1216d01aef4ad5fad513176e0867c6d Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 30 Jan 2012 21:38:46 +0000 Subject: [PATCH 2/2] Use the requested sim's map, not our own --- OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index ac95598048..e42c946807 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs @@ -1024,10 +1024,10 @@ namespace OpenSim.Region.CoreModules.World.WorldMap switch (flag & 0xffff) { case 0: - block.MapImageId = m_scene.RegionInfo.RegionSettings.ParcelImageID; + block.MapImageId = r.TerrainImage; break; case 2: - block.MapImageId = m_scene.RegionInfo.RegionSettings.ParcelImageID; + block.MapImageId = r.ParcelImage; break; default: block.MapImageId = UUID.Zero;