From 39aab8eb9249bb15a557a9e76db8e0d311f2d2de Mon Sep 17 00:00:00 2001
From: Daniel Schramm <xschramm@fi.muni.cz>
Date: Tue, 29 Jun 2021 16:46:14 +0200
Subject: [PATCH] PrioritySphere visitor clears list of priorities when a facet
 is processed repeatedly

---
 .../analyst/visitors/mesh/PrioritySphere.java         | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/Comparison/src/main/java/cz/fidentis/analyst/visitors/mesh/PrioritySphere.java b/Comparison/src/main/java/cz/fidentis/analyst/visitors/mesh/PrioritySphere.java
index 533016db..a7c1d414 100644
--- a/Comparison/src/main/java/cz/fidentis/analyst/visitors/mesh/PrioritySphere.java
+++ b/Comparison/src/main/java/cz/fidentis/analyst/visitors/mesh/PrioritySphere.java
@@ -67,6 +67,8 @@ public class PrioritySphere extends MeshVisitor  {
     public void visitMeshFacet(MeshFacet facet) {
         final List<MeshPoint> vertices = facet.getVertices();
         
+        final List<Double> prioritiesList = new ArrayList<>(vertices.size());
+        
         for (int i = 0; i < vertices.size(); i++) {
             final double distance = sphereCenterPosition.distance(vertices.get(i).getPosition());
             final double priority;
@@ -76,10 +78,11 @@ public class PrioritySphere extends MeshVisitor  {
                 priority = 1 - distance / sphereRadius;
             }
             
-            synchronized(this) {
-                priorities.computeIfAbsent(facet, meshFacet -> new ArrayList<>())
-                        .add(priority);
-            }
+            prioritiesList.add(priority);
+        }
+        
+        synchronized(this) {
+            priorities.put(facet, prioritiesList);
         }
     }
 }
-- 
GitLab