diff options
author | Melanie | 2012-11-02 10:59:04 +0100 |
---|---|---|
committer | Melanie | 2012-11-02 10:59:04 +0100 |
commit | d383bcc0dc2b61a93521293d92590d9245f5e17e (patch) | |
tree | 5cabd3ee3e282fcaaf913bd1cf962ea5b783de50 | |
parent | Merge branch 'ubitwork' into avination (diff) | |
parent | lock unique and uniqueReleased in same order when both locks are needed (diff) | |
download | opensim-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.cs | 34 |
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 | ||