aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMelanie2012-11-02 10:59:04 +0100
committerMelanie2012-11-02 10:59:04 +0100
commitd383bcc0dc2b61a93521293d92590d9245f5e17e (patch)
tree5cabd3ee3e282fcaaf913bd1cf962ea5b783de50
parentMerge branch 'ubitwork' into avination (diff)
parent lock unique and uniqueReleased in same order when both locks are needed (diff)
downloadopensim-SC-d383bcc0dc2b61a93521293d92590d9245f5e17e.zip
opensim-SC-d383bcc0dc2b61a93521293d92590d9245f5e17e.tar.gz
opensim-SC-d383bcc0dc2b61a93521293d92590d9245f5e17e.tar.bz2
opensim-SC-d383bcc0dc2b61a93521293d92590d9245f5e17e.tar.xz
Merge branch 'ubitwork' into avination
-rw-r--r--OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs34
1 files changed, 14 insertions, 20 deletions
diff --git a/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs b/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs
index 29fdda4..6e1a105 100644
--- a/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs
+++ b/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs
@@ -1057,25 +1057,22 @@ namespace OpenSim.Region.Physics.Meshing
1057 mesh.RefCount++; 1057 mesh.RefCount++;
1058 return mesh; 1058 return mesh;
1059 } 1059 }
1060 }
1061 1060
1062 // try to find a identical mesh on meshs recently released 1061 // try to find a identical mesh on meshs recently released
1063 lock (m_uniqueReleasedMeshes) 1062 lock (m_uniqueReleasedMeshes)
1064 {
1065 m_uniqueReleasedMeshes.TryGetValue(key, out mesh);
1066 if (mesh != null)
1067 { 1063 {
1068 m_uniqueReleasedMeshes.Remove(key); 1064 m_uniqueReleasedMeshes.TryGetValue(key, out mesh);
1069 lock (m_uniqueMeshes) 1065 if (mesh != null)
1070 { 1066 {
1067 m_uniqueReleasedMeshes.Remove(key);
1071 try 1068 try
1072 { 1069 {
1073 m_uniqueMeshes.Add(key, mesh); 1070 m_uniqueMeshes.Add(key, mesh);
1074 } 1071 }
1075 catch { } 1072 catch { }
1073 mesh.RefCount = 1;
1074 return mesh;
1076 } 1075 }
1077 mesh.RefCount = 1;
1078 return mesh;
1079 } 1076 }
1080 } 1077 }
1081 return null; 1078 return null;
@@ -1108,25 +1105,22 @@ namespace OpenSim.Region.Physics.Meshing
1108 mesh.RefCount++; 1105 mesh.RefCount++;
1109 return mesh; 1106 return mesh;
1110 } 1107 }
1111 }
1112 1108
1113 // try to find a identical mesh on meshs recently released 1109 // try to find a identical mesh on meshs recently released
1114 lock (m_uniqueReleasedMeshes) 1110 lock (m_uniqueReleasedMeshes)
1115 {
1116 m_uniqueReleasedMeshes.TryGetValue(key, out mesh);
1117 if (mesh != null)
1118 { 1111 {
1119 m_uniqueReleasedMeshes.Remove(key); 1112 m_uniqueReleasedMeshes.TryGetValue(key, out mesh);
1120 lock (m_uniqueMeshes) 1113 if (mesh != null)
1121 { 1114 {
1115 m_uniqueReleasedMeshes.Remove(key);
1122 try 1116 try
1123 { 1117 {
1124 m_uniqueMeshes.Add(key, mesh); 1118 m_uniqueMeshes.Add(key, mesh);
1125 } 1119 }
1126 catch { } 1120 catch { }
1121 mesh.RefCount = 1;
1122 return mesh;
1127 } 1123 }
1128 mesh.RefCount = 1;
1129 return mesh;
1130 } 1124 }
1131 } 1125 }
1132 1126