From a093ec31453f783fe4b61e7e87476f42304eb10d Mon Sep 17 00:00:00 2001
From: Daniel Schramm <xschramm@fi.muni.cz>
Date: Wed, 6 Oct 2021 13:16:57 +0200
Subject: [PATCH] Repeated scene rendering eliminated

---
 .../java/cz/fidentis/analyst/distance/DistanceAction.java    | 2 --
 .../cz/fidentis/analyst/registration/RegistrationAction.java | 1 -
 .../java/cz/fidentis/analyst/toolbar/FaceToFaceToolBar.java  | 5 +++++
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java b/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java
index e2257afe..4fe3acb0 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/distance/DistanceAction.java
@@ -138,10 +138,8 @@ public class DistanceAction extends ControlPanelAction {
                 
                 updateHausdorffDistanceInformation();
                 getSecondaryDrawableFace().setRenderHeatmap(heatmapRender);
-                renderScene();
             } else {
                 weightedFeaturePoints.hide();
-                renderScene();
             }
         });
         topControlPanel.setSelectedComponent(controlPanel); // Focus Hausdorff distance panel
diff --git a/GUI/src/main/java/cz/fidentis/analyst/registration/RegistrationAction.java b/GUI/src/main/java/cz/fidentis/analyst/registration/RegistrationAction.java
index f394567f..360a964a 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/registration/RegistrationAction.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/registration/RegistrationAction.java
@@ -72,7 +72,6 @@ public class RegistrationAction extends ControlPanelAction {
                 calculateFeaturePoints();
                 setHeatmap();
                 getSecondaryDrawableFace().setRenderHeatmap(heatmapRender);
-                renderScene();
             }
         });
         topControlPanel.setSelectedComponent(controlPanel); // Focus registration panel
diff --git a/GUI/src/main/java/cz/fidentis/analyst/toolbar/FaceToFaceToolBar.java b/GUI/src/main/java/cz/fidentis/analyst/toolbar/FaceToFaceToolBar.java
index 5bed74a2..c1dc6a9e 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/toolbar/FaceToFaceToolBar.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/toolbar/FaceToFaceToolBar.java
@@ -23,6 +23,11 @@ public class FaceToFaceToolBar extends RenderingToolBar {
         super(canvas);
         addPrimaryFaceButton();
         addSecondaryFaceButton();
+        
+        // (Re)render scene after all change listeners have been called
+        // (the first added litener is called last)
+        controlPanel.addChangeListener(e -> getCanvas().renderScene());
+        
         // Add distance panel to the control panel
         new DistanceAction(getCanvas(), controlPanel);
         // Add registration panel to the control panel
-- 
GitLab